Go语言中slice的用法实例分析
本文实例讲述了Go语言中slice的用法。分享给大家供大家参考。具体如下:
slice指向数组的值,并且同时包含了长度信息。
[]T是一个元素类型为T的slice。
packagemain import"fmt" funcmain(){ p:=[]int{2,3,5,7,11,13} fmt.Println("p==",p) fori:=0;i<len(p);i++{ fmt.Printf("p[%d]==%d\n", i,p[i]) } }
slice可以重新切片,创建一个新的slice值指向相同的数组。
表达式
s[lo:hi]
表示从lo到hi-1的slice元素,含有两端。因此
s[lo:lo]
是空的,而
s[lo:lo+1]
有一个元素。
packagemain import"fmt" funcmain(){ p:=[]int{2,3,5,7,11,13} fmt.Println("p==",p) fmt.Println("p[1:4]==",p[1:4]) //missinglowindeximplies0 fmt.Println("p[:3]==",p[:3]) //missinghighindeximplieslen(s) fmt.Println("p[4:]==",p[4:]) }
slice由函数make创建。这会分配一个零长度的数组并且返回一个slice指向这个数组:
a:=make([]int,5) //len(a)=5
slice有长度和容量。slice的容量是底层数组可以增长的最大长度。
为了指定容量,可传递第三个参数到make:
b:=make([]int,0,5) //len(b)=0,cap(b)=5
slice可以通过“重新切片”来扩容(增长到容量上限):
b=b[:cap(b)]//len(b)=5,cap(b)=5 b=b[1:] //len(b)=4,cap(b)=4 packagemain import"fmt" funcmain(){ a:=make([]int,5) printSlice("a",a) b:=make([]int,0,5) printSlice("b",b) c:=b[:2] printSlice("c",c) d:=c[2:5] printSlice("d",d) } funcprintSlice(sstring,x[]int){ fmt.Printf("%slen=%dcap=%d%v\n", s,len(x),cap(x),x) }
slice的零值是nil。
一个nil的slice的长度和容量是0。
packagemain import"fmt" funcmain(){ varz[]int fmt.Println(z,len(z),cap(z)) ifz==nil{ fmt.Println("nil!") } }
希望本文所述对大家的Go语言程序设计有所帮助。