結構體中字段類型的改變直接造成內存對齊結果的改變,是的佔用內存空間也不一樣
package main import ( "fmt" "unsafe" ) func main() { var xx struct { a bool b int32 c []int } var x struct { a int32 b []int c bool } fmt.Println("SIZE") fmt.Println(unsafe.Sizeof(x)) //32 fmt.Println(unsafe.Sizeof(xx)) //40 fmt.Println(unsafe.Sizeof(x.a)) fmt.Println(unsafe.Sizeof(x.b)) fmt.Println(unsafe.Sizeof(x.c)) fmt.Println("ALIGN") fmt.Println(unsafe.Alignof(x)) fmt.Println(unsafe.Alignof(x.a)) fmt.Println(unsafe.Alignof(x.b)) fmt.Println(unsafe.Alignof(x.c)) fmt.Println("OFFSET") fmt.Println(unsafe.Offsetof(x.a)) fmt.Println(unsafe.Offsetof(x.b)) fmt.Println(unsafe.Offsetof(x.c)) }