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语言程序设计有所帮助。