Slice 是 Go 中一个关键的数据类型,是一个比数组更加强大的序列接口

package main
import "fmt"
func main() {
不像数组,slice 的类型仅由它所包含的元素决定(不像数组中还需要元素的个数)。要创建一个长度非零的空slice,需要使用内建的方法 make。这里我们创建了一个长度为3的 string 类型 slice(初始化为零值)。 s := make([]string, 3)
fmt.Println("emp:", s)
我们可以和数组一样设置和得到值 s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("set:", s)
fmt.Println("get:", s[2])
如你所料,len 返回 slice 的长度 fmt.Println("len:", len(s))
作为基本操作的补充,slice 支持比数组更多的操作。其中一个是内建的 append,它返回一个包含了一个或者多个新值的 slice。注意我们接受返回由 append返回的新的 slice 值。 s = append(s, "d")
s = append(s, "e", "f")
fmt.Println("apd:", s)
Slice 也可以被 copy。这里我们创建一个空的和 s 有相同长度的 slice c,并且将 s 复制给 c。 c := make([]string, len(s))
copy(c, s)
fmt.Println("cpy:", c)
Slice 支持通过 slice[low:high] 语法进行“切片”操作。例如,这里得到一个包含元素 s[2], s[3],s[4] 的 slice。 l := s[2:5]
fmt.Println("sl1:", l)
这个 slice 从 s[0] 到(但是包含)s[5]。 l = s[:5]
fmt.Println("sl2:", l)
这个 slice 从(包含)s[2] 到 slice 的后一个值。 l = s[2:]
fmt.Println("sl3:", l)
我们可以在一行代码中声明并初始化一个 slice 变量。 t := []string{"g", "h", "i"}
fmt.Println("dcl:", t)
Slice 可以组成多维数据结构。内部的 slice 长度可以不同,这和多位数组不同。 twoD := make([][]int, 3)
for i := 0; i < 3; i++ {
innerLen := i + 1
twoD[i] = make([]int, innerLen)
for j := 0; j < innerLen; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}

Result:

$ go run slices.go
emp: [ ]
set: [a b c]
get: c
len: 3
apd: [a b c d e f]
cpy: [a b c d e f]
sl1: [c d e]
sl2: [a b c d e]
sl3: [c d e f]
dcl: [g h i]
2d: [[0] [1 2] [2 3 4]]

坐标: 上一个例子   下一个例子

最新文章

  1. 【Python实战】Scrapy豌豆荚应用市场爬虫
  2. FreeMarker如何输出特殊含义字符
  3. Ubuntu 14.04 (32位)上搭建Hadoop 2.5.1单机和伪分布式环境
  4. jQuery实现联动下拉列表查询框
  5. HDU 2577 How to Type(dp题)
  6. python numpy 模块简单介绍
  7. svn cleanup failed–previous operation has not finished 解决方法
  8. 深入MySQL源码 学习方法 何登成专家
  9. ORACLE SQLloader详细语法
  10. Java压缩技术的学习
  11. 游戏碰撞OBB算法(java代码)
  12. TypeScript设计模式之解释器
  13. pl/sql oracle数据库中文数据显示异常或者不能使用中文查询的解决办法
  14. Eclipse设置智能提示
  15. 用Redis实现分布式锁 与 实现任务队列
  16. java List去重方式及效率对比
  17. 深入理解golang 的栈
  18. 浅谈Java的学习
  19. 命名空间出错 namespace Web.Skin.@default
  20. 2018.08.11 洛谷P3224 [HNOI2012]永无乡(线段树合并)

热门文章

  1. 关于touch-action
  2. shell编程基础知识3
  3. java上传附件含有%处理或url含有%(URLDecoder: Illegal hex characters in escape (%) pattern - For input string)
  4. 【leetcode】399. Evaluate Division
  5. json序列化反序列
  6. keras及神经网络,以简单实例入门
  7. 在VMware中配置网卡之NAT模式
  8. 【HDOJ6606】Distribution of books(二分,BIT)
  9. ini操作
  10. 2016年Esri技术公开课全年资料分享