【Go】切片
声明变量-》分配空间-》赋值
1
2
3
4
5
6
7// 1. 声明切片,但不赋值
var slice1 []int // 声明切片
slice1 = make([]int, 3) // 开辟空间
slice1[0] = 1 // 赋值
slice1[1] = 2
slice1[2] = 3
fmt.Println(slice1)声明变量并分配空间-》赋值
1
2
3
4
5
6// 2. 声明切片并分配空间
slice2 := make([]int, 3) // 声明并分配空间
slice2[0] = 1 // 赋值
slice2[1] = 2
slice2[2] = 3
fmt.Println(slice2)截取
1
2
3
4
5
6// 3.截取 [startIndex:endIndex) 左闭右开
slice3 := slice2[0:2]
fmt.Println(slice3)
// slice3指向slice2所在内存空间的起始地址处
slice3[0] = 100
fmt.Println("slice2 :", slice2)测试结果
复制 (若没有分配内存空间,则无法进行有效复制)
1
2
3
4
5
6
7
8
9// 4.复制 需要分配内存空间才能有效复制
var slice4 []int
fmt.Println("----未分配内存空间的复制----")
copy(slice4, slice2)
fmt.Println("slice4 :", slice4)
fmt.Println("----分配完内存空间的复制----")
slice4 = make([]int, len(slice2))
copy(slice4, slice2)
fmt.Println("slice4 :", slice4)测试结果