golang的切片slice

Go官网对slice的解释
 
go的数组写作方式
var a [4]int
a[0] = 1
i := a[0]
//i ==1

  

b := [2]string{"Peter", "Teller"}
b := [...]string{"Peter", "Teller"}

  

 切片建立在数组之上更加强大和方便
和数组类型不一样,切片类型没有指定长度
 
切片文字就像数组一样被声明,只是可以忽略元素计数
letters := []string{"a", "b", "c", "d"}
 
切片是被创建在具有签名内联函数中叫做make
func make([]T, len, cap) []T
这里的T代表着创建切片的元素类型,make函数需要类型,长度和容量。被调用的时候,make分配一个数组,并且返回一个调用该数组的切片
var s []byte
s = make([byte, 5, 5])
// s == []byte{0, 0, 0, 0, 0}

当容量参数不写的时候,默认是长度的值

s := make([]byte, 5)

 
切片的长度和容量可以使用内置的len和cap函数来检测
len(s) == 5
cap(s) ==5
 
空切片叫做nil,一个nil返回的长度和容量都是0
截取一个已经存在的数组或者切片也可以形成一个切片,通过:分隔的俩个索引来截断的数组或切片的长度。如下:
b := []byte{'g', 'o', 'l', 'a', 'n', 'g'}
//b[1:4] == []byte{'o', 'l', 'a'} 和b分享同样的存储位置
截断的索引不写的时候默认是0和切片(数组)长度
//b[:2] == []byte{'g', 'o'}
//b[2:0] == []byte{'l', 'a', 'n', 'g'}
//b[:] == b

给数组创建切片:

x := [3]string{"aaaa", "bbbb", "cccc"}
s := x[:] //指向x的切片s
 
 

猜你喜欢

转载自www.cnblogs.com/lsill/p/10628506.html