go 结构体和结构体指针

 Golang  2023-02-21  admin  402  542

结构体实例化

//结构体实例化
//写法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


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

go 结构体和结构体指针 —— code.cent123.com

相关推荐


点名工具,抽奖软件

点名工具,抽奖软件

酷炫的倒计时客户端

QQ: 425100867捐赠开发者:

go 的加减乘除运算注意事项,及相互转化问题

packagemain import( "fmt" ) funcmain(){ varintAint=10 varintBint=9 varfloatAfloat64=10 varfloatBfloat64=9 //在Go语言中,操作数的类型必须匹配。也就是说,进行运算时,操作数的类型必须一致或能够进行合理的转换。 //具体来说

AI人脸替换工具离线版V6.0 最新版下载

AI人脸替换工具离线版V6.0 最新版下载下载 解压 双击运行roop_rope_facefusion_V60.exe 文件即可下载链接:https://pan.quark.cn/s/be7953632126AI人脸替换工具离线版V6.0