如何確定Go 中結構體的大小
Go 的unsafe 套件提供了Sizeof 方法,該方法傳回值的大小(以字節為單位) 。例如,要確定下面定義的 Coord3d 結構體的大小,可以使用以下程式碼:
import "unsafe" type Coord3d struct { X, Y, Z int64 } func main() { fmt.Println(unsafe.Sizeof(Coord3d{})) }
但是,需要注意的是,結構體的大小不包括其引用的記憶體。字段。例如,如果一個結構體包含一個切片,則 Sizeof 方法將傳回切片描述符的大小,而不是切片引用的記憶體大小。
手動計算結構體大小
除了使用Sizeof 方法之外,您還可以按照以下方法手動計算結構體的大小規則:
根據這些規則,您可以透過求和其欄位的大小並添加任何必要的填充來計算任何結構的大小。例如,Coord3d 結構體具有三個 int64 字段,每個字段的對齊方式為 8 位元組。因此,Coord3d 結構體的大小為 24 位元組。您可以使用 gostructsize.appspot.com.
等服務來驗證您的計算以上是如何計算 Go 結構體的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!