Open xiannv opened 5 years ago
创建数组本质是分配一块指定大小的内存(malloc
)
var arr [5]int
var arr [5]int{1,2,3,4,5}
var arr [...]int{1,2,3,4,5}
初始化值为0,内置函数len()
获取数组长度:
var arr [5]int
arr[4] = 42
更改切片中某些元素的值,实际上是在改变切片指向的数组元素的值
var foo []int
foo = make([]int, 5)
foo[3] = 42
foo[4] = 100
bar := foo[1:4]
//在原切片的基础上创建一个子切片,然后改变子切片里元素的值
bar[1] = 99
fmt.Println(foo[1:4])
fmt.Println(bar[1])
append 对切片扩容时,如果大小在 1024 字节以内,每次都会以双倍的大小来申请内存,但如果超过了 1024 字节则会使用所谓的 memory size classes 来保证增长的容量不会大于当前容量的 12.5%。
a := make([]int, 32)
b := a[1:16]
a = append(a, 1)
a[2] = 42
fmt.Println(b[2])
fmt.Println(a[2])
Learning doc
《如何避开 Go 中的各种陷阱》
《Go语言标准库》