關(guān)于Go結(jié)構(gòu)體內(nèi)存大小的一點(diǎn)小知識(shí)
在go語(yǔ)言里我們經(jīng)常使用struct作為數(shù)據(jù)存儲(chǔ),由于指針對(duì)齊問(wèn)題,可能結(jié)構(gòu)體的大小也有所不同。
`type` `DemoOne ``struct` `{`
`id int8`
`age int32`
`add int8`
`}`
`type` `DemoTwo ``struct` `{`
`age int32`
`id int8`
`add int8`
`}`
上述兩個(gè)內(nèi)容一致的結(jié)構(gòu)體在占用的內(nèi)存是多少呢?
`func` `main() {`
`fmt.Println(unsafe.Sizeof(DemoOne{}))``//size為12`
`fmt.Println(unsafe.Sizeof(DemoTwo{}))``//size為8`
`}`
由于指針對(duì)齊的問(wèn)題,相同屬性的結(jié)構(gòu)體,因?yàn)閷傩缘捻樞虿煌矔?huì)產(chǎn)生不同大小的內(nèi)存占用。