关于Go slice的扩容问题

YanDaojiang · · 1234 次点击
如果 ``` s := []int{1, 2} s = append(s, 3) s = append(s, 4) s = append(s, 5) ``` 这样得到的结果的cap是8
#1
更多评论
是的,这样我尝试了,的确是8
#2
2楼 <a href="/user/YanDaojiang" title="@YanDaojiang">@YanDaojiang</a> 查了下,和内存对齐有关。 正常需要5Byte,对齐后占用的cap为6Bytes ``` // class bytes/obj bytes/span objects tail waste max waste // 1 8 8192 1024 0 87.50% // 2 16 8192 512 0 43.75% // 3 24 8192 341 8 29.24% // 4 32 8192 256 0 21.88% // 5 48 8192 170 32 31.52% // 6 64 8192 128 0 23.44% ```
#3