从煎鱼那看的,也是扫盲系列,细节具体等慢慢补充,先开题感受下。

这就是没内存对齐,这就导致了我们取1-4花了两步。实际上我们很多都是默认开内存对齐的,那么还有什么研究的,可以稍微优化一些,比如下面这种。
type Part1 struct {
a bool
b int32
c int8
d int64
e byte
}
type Part2 struct {
c int8
a bool
e byte
b int32
d int64
}
func main() {
part1 := Part1{}
part2 := Part2{}
fmt.Println(unsafe.Sizeof(part1), unsafe.Alignof(part1))
fmt.Println(unsafe.Sizeof(part2), unsafe.Alignof(part2))
}
输出
32 8 16 8
Part1 axxx|bbbb|cxxx|xxxx|dddd|dddd|exxx|xxxx
Part2 ecax|bbbb|dddd|dddd
https://eddycjy.gitbook.io/golang/di-1-ke-za-tan/go-memory-align
来源:https://www.cnblogs.com/CherryTab/p/12632032.html