代码如下:
package main
import "fmt"
func main() {
var s1 []int //定义一个存放int元素的切片s1,切片的底层就是数组
var s2 []string //定义一个存放string元素的切片s2,切片的底层就是数组
fmt.Printf("s1是否与nil相等:%v\n", s1 == nil)
//初始化
s1 = []int{1, 2, 3}
s2 = []string{"沙河", "张江", "坂田"}
fmt.Printf("s1的长度:%d\n", len(s1))
fmt.Printf("s2的长度:%d\n", len(s2))
fmt.Printf("s1的第一个元素:%v\n", s1[0])
fmt.Printf("s2的第二个元素是:%v\n", s2[1])
fmt.Printf("s2的容量是:%v\n", cap(s2))
fmt.Printf("s1是否与nil相等:%v\n", s1 == nil)
a1 := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
a2 := a1[2:len(a1)] //中括号里的:前的包含,:后的不包含
fmt.Printf("a2:%v\n", a2)
a3 := a1[:4]
a4 := a1[3:6]
a5 := a1[:]
fmt.Printf("a3:%v\n", a3)
//cap代表从开始位置切割,到原始数组最后一个位置的长度
fmt.Printf("a4:%v,len(a4):%d,cap(a4):%d\n", a4, len(a4), cap(a4))
fmt.Printf("a5:%v\n", a5)
}
运行结果如下:
PS E:\go\src\github.com\691194615@qq.com\studygo\day01\.vscode\.vscode\for04> go build slice01.go
PS E:\go\src\github.com\691194615@qq.com\studygo\day01\.vscode\.vscode\for04> .\slice01.exe
s1是否与nil相等:true
s1的长度:3
s2的长度:3
s1的第一个元素:1
s2的第二个元素是:张江
s2的容量是:3
s1是否与nil相等:false
a2:[3 4 5 6 7 8 9]
a3:[1 2 3 4]
a4:[4 5 6 7 8 9],len(a4):6,cap(a4):6
a5:[1 2 3 4 5 6 7 8 9]
PS E:\go\src\github.com\691194615@qq.com\studygo\day01\.vscode\.vscode\for04> go build slice01.go
PS E:\go\src\github.com\691194615@qq.com\studygo\day01\.vscode\.vscode\for04> .\slice01.exe
s1是否与nil相等:true
s1的长度:3
s2的长度:3
s1的第一个元素:1
s2的第二个元素是:张江
s2的容量是:3
s1是否与nil相等:false
a2:[3 4 5 6 7 8 9]
a3:[1 2 3 4]
a4:[4 5 6],len(a4):3,cap(a4):6
a5:[1 2 3 4 5 6 7 8 9]
图片示例如下:

#go,golang,slice,切片