结构体实例化
//结构体实例化 //写法1 var a Animal a.Name = "小狗" a.Age = 18 //写法2 a2 := Animal{ Name: "dog", Age: 18, } fmt.Println(fmt.Sprintf("类型:%T - 值:%v 占用内存:%v", a, a, unsafe.Sizeof(a))) // 类型:main.Animal - 值:{小狗 18} 占用内存:24 fmt.Println(fmt.Sprintf("类型:%T - 值:%v 占用内存:%v", a2, a2, unsafe.Sizeof(a2))) // 类型:main.Animal - 值:{dog 18} 占用内存:24
结构体指针实例化
//结构体指针实例化 //写法1 var b *Animal b = new(Animal) //写法2 b2 := new(Animal) //写法3 b3 := &Animal{} b3.Name = "cat" //在底层是(*b).Name = "cat",这是Go语言帮我们实现的语法糖 b3.Age = 16 fmt.Println(fmt.Sprintf("类型:%T - 值:%v 占用内存:%v", b, b, unsafe.Sizeof(b))) //类型:*main.Animal - 值:&{ 0} 占用内存:8 fmt.Println(fmt.Sprintf("类型:%T - 值:%v 占用内存:%v", b2, &b2, unsafe.Sizeof(b2))) //类型:*main.Animal - 值:0xc00000a030 占用内存:8 fmt.Println(fmt.Sprintf("类型:%T - 值:%v 占用内存:%v", b2, *b3, unsafe.Sizeof(b3))) //类型:*main.Animal - 值:{cat 16} 占用内存:8
空结构体
s := struct{}{} fmt.Println(fmt.Sprintf("类型:%T - 值:%v 占用内存:%v", s, s, unsafe.Sizeof(s))) //类型:struct {} - 值:{} 占用内存:0