import "fmt"
func test() {
var arr=[]string{"12","23","34"}
fmt.Printf("arr %+v,arr cap %d\n",arr,cap(arr))
arrNew:=slice(arr)
fmt.Printf("new %+v,arrNew cap %d\n",arrNew,cap(arrNew))
arrNew[0]="90"
fmt.Printf("arr %+v,arr cap %d\n",arr,cap(arr))
fmt.Printf("new %+v,arrNew cap %d\n",arrNew,cap(arrNew))
arr1:=make([]string,3,4)
arr1[0]="12"
arr1[1]="23"
arr1[2]="34"
fmt.Printf("arr1 %+v,arr1 cap %d\n",arr1,cap(arr1))
arrNew1:=slice(arr1)
fmt.Printf("new1 %+v,arrNew1 cap %d\n",arrNew1,cap(arrNew1))
arrNew1[0]="90"
fmt.Printf("arr1 %+v,arr1 cap %d\n",arr1,cap(arr1))
fmt.Printf("new1 %+v,arrNew1 cap %d\n",arrNew1,cap(arrNew1))
}
func slice(arr []string) []string {
arr= append(arr, "78")
return arr
}
执行结果
arr [12 23 34],arr cap 3
new [12 23 34 78],arrNew cap 6
arr [12 23 34],arr cap 3
new [90 23 34 78],arrNew cap 6
arr1 [12 23 34],arr1 cap 4
new1 [12 23 34 78],arrNew1 cap 4
arr1 [90 23 34],arr1 cap 4
new1 [90 23 34 78],arrNew1 cap 4
go的切片的数据格式
type SliceHeader struct {
Data uintptr
Len int
Cap int
}