今天看了无闻的GO 变成基础,看到了切片为引用类型的说明, 写代码实验了一下
var slice1 []int = make([]int, 4, 6)
var slice2 []int = slice1
fmt.Println(slice1, slice2) // 输出内容 [0 0 0] [0 0 0]
////操作slice1 & slice2 看看是否会互相 影响
slice1[1] = 11
slice2[2] = 22
slice1 = append(slice1, 33)
fmt.Println(slice1, slice2) // 输出结果 [0 11 22 0 33] [0 11 22 0]
slice2 = append(slice2, 44) //
fmt.Println(slice1, slice2) // 输出结果 [0 11 22 0 44] [0 11 22 0 44]
查看输出结果: 发现 切片的引用类型说的是 赋值, 传入参数, 只会共享 底层的数组, 并不会共用两个切片的 quantity变量
var slice []int = make([]int, 6, 10)
fmt.Println(slice) // [0 0 0 0 0 0]
fillSlice(slice)
fmt.Println(slice)// [0 1 2 3 0 0] /*填充切片的内容*/
func fillSlice(slice []int) {slice[0] = 0slice[1] = 1slice[2] = 2slice[3] = 3slice = append(slice, 4)slice = append(slice, 5)slice = append(slice, 6)}
有疑问加站长微信联系(非本文作者)