go 结构体和结构体指针

 Golang  2023-02-21  admin  469  633

结构体实例化

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

相关推荐


go 在Windows系统中交叉编译临时环境变量设置

go 编译临时环境变量设置并 交叉编译命令$env:GOOS="linux";$env:GOARCH="amd64";gobuild-ofilenametest.go$env:GOOS="linux";$env:GOARCH="amd64";`gobuild-ofilenametest.go`这两种方式 都是在Powe

phpstorm 设置 外部命令

C:\Program Files\WindowsApps\Microsoft.WindowsTerminal_1.20.11781.0_x64__8wekyb3d8bbwe\wt.exe-d $ContentRoot$$ProjectFileDir$

点名工具,抽奖软件

点名工具,抽奖软件

酷炫的倒计时客户端

QQ: 425100867捐赠开发者: