深入了解Go语言中的unsafe.Sizeof():探究变量与数据类型的内存占用
package main
import (
"fmt"
"unsafe"
)
func main() {
// 定义一些变量用于演示
var a bool
var b int8 = -1
var c uint = 1
var d float32 = -1.1
var e string = "hello"
var f []int = []int{1, 2, 3}
var g struct {
x int
y string
}
// 打印各变量类型的内存占用大小
fmt.Printf("bool: %d bytes\n", unsafe.Sizeof(a))
fmt.Printf("int8: %d bytes\n", unsafe.Sizeof(b))
fmt.Printf("uint: %d bytes\n", unsafe.Sizeof(c))
fmt.Printf("float32: %d bytes\n", unsafe.Sizeof(d))
fmt.Printf("string: %d bytes\n", unsafe.Sizeof(e))
fmt.Printf("slice: %d bytes\n", unsafe.Sizeof(f))
fmt.Printf("struct: %d bytes\n", unsafe.Sizeof(g))
}
这段代码演示了如何使用unsafe.Sizeof()
来获取Go语言中不同基本数据类型和复合类型的内存占用大小。这对于理解Go内存模型和优化内存使用非常有帮助。
评论已关闭