go语言得到结构体实际占用内存大小, 如果结构体包含指针
时间: 2023-10-05 17:04:40 浏览: 275
go代码-Go 结构体指针
在 Go 语言中,可以使用 `unsafe.Sizeof()` 函数来获取结构体的实际占用内存大小。例如:
```go
import "unsafe"
type MyStruct struct {
Field1 int
Field2 float64
Field3 *string
}
func main() {
myStruct := MyStruct{}
size := unsafe.Sizeof(myStruct)
fmt.Println(size) // 输出结果为结构体占用的字节数
// 如果结构体包含指针,还需要考虑指针所指向的数据占用的内存大小
str := "Hello"
myStruct.Field3 = &str
size = unsafe.Sizeof(myStruct) + unsafe.Sizeof(*myStruct.Field3)
fmt.Println(size) // 输出结果为结构体加指针所指向数据的总字节数
}
```
需要注意的是,在使用 `unsafe.Sizeof()` 函数时,需要确保结构体中的字段是按字节对齐的,否则得到的结果可能不准确。可以使用 `unsafe.Alignof()` 函数来检查字段的对齐方式。
阅读全文