Struct has different size if the field order is different
package main import ( "fmt" "unsafe" ) type A struct { a bool b int64 c int } type B struct { b int64 a bool c int } type C struct { } func main() { // output 24 fmt.Println(unsafe.Sizeof(A{})) // output 16 fmt.Println(unsafe.Sizeof(B{})) // output 0 fmt.Println(unsafe.Sizeof(C{})) } Struct A and B have the same fields, but if specified in different order they result in different size. why? Size of struct C is zero. How much memory is allocated by the system for a := C{} ? Thanks. 1. Struct sizes TL;DR; (Summary): Different implicit padding will be used if you reorder the fields, and the