我注意到当容量为奇数时,切片的容量以不同的方式表现。更具体地说:当一个元素添加到切片时,当原始容量为偶数时,切片的容量增加一倍。但是当原始容量为奇数时,容量增加一然后翻倍。例子:
s := make([]int, 28, 28)
s = append(s, 1)
fmt.Println("len=", len(s), " cap=", cap(s)) // len = len + 1, cap = 2 * cap
pri := make([]int, 27, 27)
pri = append(pri, 1)
fmt.Println("len=", len(pri), " cap=", cap(pri)) // len = len + 1, cap = 2 * (cap + 1)
假设这不是错误,这种行为的原因是什么?
游乐场链接:http : //play.golang.org/p/wfmdobgCUF
慕虎7371278
相关分类