如何确定 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中文网其他相关文章!