Since go `1.19`, the [`atomic.Int64`](https://github.com/golang/go/blob/go1.19/src/sync/atomic/type.go#L82) was added
```go type Int64 struct { _ noCopy _ align64 v int64 } ``` There is one additional [`align64`](https://github.com/golang/go/blob/go1.19/src/sync/atomic/type.go#L191) in `atomic.Int64` ```go // align64 may be added to structs that must be 64-bit aligned. // This struct is recognized by a special case in the compiler // and will not work if copied to any other package. type align64 struct{} ``` With the test codes under go 1.19 ```go var i64 int64 var a64 atomic.Int64 fmt.Println(unsafe.Alignof(i64)) fmt.Println(unsafe.Alignof(a64)) ``` The result is ``` 8 8 ``` The test environment is MacOS with CPU info ``` hw.ncpu: 12 hw.activecpu: 12 hw.perflevel0.cpusperl2: 2 hw.perflevel0.cpusperl3: 12 hw.perflevel0.logicalcpu: 12 hw.perflevel0.logicalcpu_max: 12 hw.perflevel0.physicalcpu: 6 hw.perflevel0.physicalcpu_max: 6 hw.cpu64bit_capable: 1 ``` It seems both `int64` and `atomic.Int64` have the same align size `8`. What does `align64 may be added to structs that must be 64-bit aligned` means? What situations can `atomic.Int64` be used? -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/c800d445-deb7-4683-b353-e1bc17d457abn%40googlegroups.com.