這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport ("fmt")func main() {arr := [...]string{"go", "python", "java", "c++", "c"}fmt.Println("arr value ", arr)fmt.Println("------------------------")slice1 := arr[1:3]fmt.Println("slice1 now is ", slice1)fmt.Println("len of slice1 is ", len(slice1), ",cap of sclie1 is ", cap(slice1))fmt.Println("------------------------")slice2 := append(slice1, "ruby", "obj-c") //如果再添加一個php,那就又是完全不同的另一番景象了。。。fmt.Println("slice2 is ", slice2)fmt.Println("len of slice2 is ", len(slice2), ",cap of sclie2 is ", cap(slice2))fmt.Println("after append : slice1 is ", slice1) //底層數組雖然變了,但是slice1的len並沒有變化fmt.Println("len of slice1 is ", len(slice1), ",cap of sclie1 is ", cap(slice1))fmt.Println("after append : arr value is ", arr)fmt.Println("------------------------")slice1 = slice1[:cap(slice1)] //這回才對了。。。fmt.Println("after reslice : slice1 is ", slice1)fmt.Println("len of slice1 is ", len(slice1), ",cap of sclie1 is ", cap(slice1))}
輸出結果:
arr value [go python java c++ c]------------------------slice1 now is [python java]len of slice1 is 2 ,cap of sclie1 is 4------------------------slice2 is [python java ruby obj-c]len of slice2 is 4 ,cap of sclie2 is 4after append : slice1 is [python java]len of slice1 is 2 ,cap of sclie1 is 4after append : arr value is [go python java ruby obj-c]------------------------after reslice : slice1 is [python java ruby obj-c]len of slice1 is 4 ,cap of sclie1 is 4