slice
// slice 数据结构
type slice struct {
array unsafe.Pointer
len int
cap int
}func main() {
array := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Printf("%p\n", &array) // 0xc00011c000
s1 := array[:5]
s2 := array[3:]
fmt.Printf("%p s1 =%v\n", s1, s1) // 0xc00011c000 [1 2 3 4 5]
fmt.Printf("%p s2 =%+v\n", s2, s2) // 0xc00011c018 [4 5 6 7 8 9 0]
s2[0] = 0
fmt.Printf("%p s1 =%v\n", s1, s1) // 0xc00011c000 [1 2 3 0 5]
fmt.Printf("%p s2 =%v\n", s2, s2) // 0xc00011c018 [0 5 6 7 8 9 0]
fmt.Printf("%p array =%v\n", &array, array) // 0xc00011c000 [1 2 3 0 5 6 7 8 9 0]
}扩容
nil vs empty slice
Last updated