1.app
slice1:= slice[0:2]
引用,非複製,因此任何對slice1或slice的修改都會影響對方spa
data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} data1 := data[0:2] data1[0] = 99 fmt.Println(data1) fmt.Println(data)
[99 2]code
[99 2 3 4 5 6 7 8 9 0]class
2.appendtest
append 比較特殊引用
聲明:數據
源slice= srcmake
添加slice = appcopy
結果slice=tarco
1)若是len(src) + len(app) <= cap(src) src和tar 是指向同一數據引用 ,即修改src或tar,會影響對方
2)不然 tar 是copy的方式 src + app ,即修改src或tar,不會影響對方
不管哪一種狀況不會影響app,由於app都會用copy的方式進入tar
func test2() { data := make([]int, 10, 20) data[0] = 1 data[1] = 2 dataappend := make([]int, 10, 20)//len <=10 則 result[0] = 99 會 影響源Slice dataappend[0] = 1 dataappend[1] = 2 result := append(data, dataappend...) result[0] = 99 result[11] = 98 fmt.Println("length:", len(data), ":", data) fmt.Println("length:", len(result), ":", result) fmt.Println("length:", len(dataappend), ":", dataappend) }