go 结构体和结构体指针

 Golang  2023-02-21  admin  58  78

结构体实例化

//结构体实例化
//写法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 结构体和结构体指针 —— centhp.com

相关推荐


php 正则获取字符串中所有图片链接地址并下载图片

php 正则获取字符串中所有图片链接地址并下载图片/** *获取图片的绝对地址 *@paramstring$content *@returnmixed *@Author:centphp.com */ functiongetImageUrl(string$content="") { //$pattern="/src=[\"\'](\S*

PHP常用正则表达式汇总

PHP常用正则表达式汇总"^\d+$"  //非负整数(正整数+0) "^[0-9]*[1-9][0-9]*$"  //正整数 "^((-\d+)|(0+))$"  //非正整数(负整数+0) "^-[0-9]*[1-9][0-9]*$"  //负整数 "^-?\d+$"    //整数

go 结构体自实现构造函数

Go没有自带的构造函数,采用自实现方式1结构体不复杂,可以返回结构体类型,值拷贝性能开销小funcNewPerson(namestring,ageint8)Person{ returnPerson{ name:name, age:age, } }方式2结构体复杂,得返回结构体指针类型,避免值拷贝产生的性能开销funcNewPerson(namestring,ageint8)*Person

go语言生成ssl网站证书

在go的x509包下有go定义的证书的结构packagemain import( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "crypto/x509" "crypto/x509/pkix" "encoding