#go 1.19 atomic 内存对齐
此外,atomic包新增的Int64和Uint64类型还有一个特质,那就是Go保证其地址可以自动对齐到8字节上(即地址可以被64整除),即便在32位平台上亦是如此,这可是连原生int64和uint64也尚无法做到的[14]。
go101[15]在推特上分享了一个基于atomic Int64和Uint64的tip。利用go 1.19新增的atomic.Int64/Uint64,我们可以用下面方法保证结构体中某个字段一定是8 byte对齐的,即该字段的地址可以被64整除。
import "sync/atomic"
type T struct { _ [0]atomic.Int64 x uint64 // 保证x是8字节对齐的 } 前面的代码中,为何不用_ atomic.Int64呢,为何用一个空数组呢,这是因为空数组在go中不占空间,大家可以试试输出上面结构体T的size,看看是不是8。
https://blog.csdn.net/bigwhite20xx/article/details/126476331 https://learnku.com/articles/73108?order_by=vote_count&