type A struct {
a int
b struct{}
c string
}
type B struct {
a int
c string
b struct{}
}
func main(){
fmt.Println(unsafe.Sizeof(A{}))
memalign.PrintStructAlignment(A{})
fmt.Println(unsafe.Sizeof(B{}))
memalign.PrintStructAlignment(B{})
}
24
---- Fields in struct ----
+----+-----------+-----------+-----------+
| ID | FIELDTYPE | FIELDNAME | FIELDSIZE |
+----+-----------+-----------+-----------+
| A | int | a | 8 |
| B | struct {} | b | 0 |
| C | string | c | 16 |
+----+-----------+-----------+-----------+
---- Memory layout ----
|A|A|A|A|A|A|A|A|
|C|C|C|C|C|C|C|C|
|C|C|C|C|C|C|C|C|
total cost: 24 Bytes.
32
---- Fields in struct ----
+----+-----------+-----------+-----------+
| ID | FIELDTYPE | FIELDNAME | FIELDSIZE |
+----+-----------+-----------+-----------+
| A | int | a | 8 |
| B | string | c | 16 |
| C | struct {} | b | 0 |
+----+-----------+-----------+-----------+
---- Memory layout ----
|A|A|A|A|A|A|A|A|
|B|B|B|B|B|B|B|B|
|B|B|B|B|B|B|B|B|
total cost: 24 Bytes.