Go 1.16 即将发布,这些变更你需要知道
slice 的扩容条件是 len,在最新的代码中,已经改为了以 cap 属性作为基准: // src/runtime/slice.go if cap > doublecap { newcap = cap } else { // 这是以前的代码:if old.len < 1024 { // 下面是 Go1.16rc1 的代码 if old.cap < 1024 { newcap = doublecap } 以官方的 test case 为例: func main() { const N = 1024 var a [N]int x := cap(append(a[:N-1:N], 9, 9)) y := cap(append(a[:N:N], 9)) println(cap(x), cap(y...阅读全文