课程名称:深入Go底层原理,重写Redis中间件实战
课程章节:什么变量的大小是 0 字节
主讲老师:Moody
今天学习的内容包括:
基本类型的字节数
空结构体
基本类型的字节数
空结构体
type People struct { } type Student struct { People age int } func main() { i := 100 fmt.Printf("%d %p\n", unsafe.Sizeof(i), &i) a := People{} fmt.Printf("%d %p\n", unsafe.Sizeof(a), &a) c := Student{} fmt.Printf("%d %p\n", unsafe.Sizeof(c), &c) fmt.Printf("%d %p\n", unsafe.Sizeof(c.People), &c.People) } 输出结果: 8 0xc000014078 0 0x547438 # 空结构体的内存长度为0,起始地址指向zerobase(runtime中定义的零地址) 8 0xc000014098 0 0xc000014098 # 子空结构体内存长度为0,起始地址指向父结构体的起始地址