Go语言的切片
package main import ( "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 4 after append : slice1 is [python java] len of slice1 is 2 ,cap of sclie1 is 4 after 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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。