github.com/code-reading/golang@v0.0.0-20220303082512-ba5bc0e589a3/coding/unsafe/alignof.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "unsafe" 6 ) 7 8 func main() { 9 fmt.Printf("bool align: %d\n", unsafe.Alignof(bool(true))) 10 fmt.Printf("int32 align: %d\n", unsafe.Alignof(int32(0))) 11 fmt.Printf("int8 align: %d\n", unsafe.Alignof(int8(0))) 12 fmt.Printf("int64 align: %d\n", unsafe.Alignof(int64(0))) 13 fmt.Printf("byte align: %d\n", unsafe.Alignof(byte(0))) 14 fmt.Printf("string align: %d\n", unsafe.Alignof("EDDYCJY")) 15 fmt.Printf("map align: %d\n", unsafe.Alignof(map[string]string{})) 16 } 17 18 /* 19 在 Go 中可以调用 unsafe.Alignof 来返回相应类型的对齐系数。 20 通过观察输出结果,可得知基本都是 2n,最大也不会超过 8。 21 这是因为我们的64位编译器默认对齐系数是 8,因此最大值不会超过这个数。 22 23 output 24 bool align: 1 25 int32 align: 4 26 int8 align: 1 27 int64 align: 8 28 byte align: 1 29 string align: 8 30 map align: 8 31 */