go lint 有个选项 malign,有兴趣可以看看这篇文章:

还有下面开源项目好像也是支持的。但我没有仔细仔细测试。

但如果自己已经知道如果做内存对齐了,可以写个小工具帮自己实现。如一个结构组织如下:

内部对齐的结构如下:

如果要求内存对齐的话,如下:

如果要总结一个检测规律,按顺序检测字段,如果不满足 8 位字节的要求,选择最有的补充在其后。比如,第一个字段是 int8,占用一个字节,选择离 8 个字节最有的组合,寻找小于等 7 的字段,找到了 int32,现在占用 3 个字节,接着寻找小于等于 3 字节的字段。。。

以此类推,重新排序所有的字段。

如此,我们自己的一个小工具检测下也不是不行。但除非我对性能有极致要求,否则一般没人关注内存是否对齐。