结构体进阶结构体构造函数为任意类型添加方法01
目录结构体方法和接收器02
结构体比较03
JSON序列化05
01结构体构造函数•值传递•指针传递结构体做函数参数值传递指针传递(地址传递)•Go语言没有构造函数的功能•使用结构体初始化的过程来模拟实现构造函数•结构体可以像其他数据类型一样将结构体类型作为参数传递给函数Go语言中的构造函数1结构体构造函数1结构体构造函数type类型名struct{字段名1字段类型1字段名2字段类型2
}funcnewfunc(变量名1变量类型,变量名2变量类型……)*类型名{return&类型名{字段名1:变量1,字段名2:变量2,
}}Go语言中的构造函数语法•Go语言的类型或结构体没有构造函数的功能,但是我们可以使用结构体初始化的过程来模拟实现构造函数
•构造函数传入的变量类型需要与return返回结构体指针字段名类型一致•构造函数可以只返回结构体中某些字段名packagemainimport"fmt"typepersonstruct{namestringageint}//构造函数约定俗成用new开头//返回的是结构体还是结构体指针//当结构体比较大的时候使用结构体指针,减少程序内存的开销
funcpersonOnlyName(namestring)*person{return&person{name:name,}//仅返回部分字段}funcnewperson(namestring,ageint)*person{return&person{name:name,age:age,}//返回所有字段}funcmain(){p1:=personOnlyName("Go语言")fmt
Println(p1)p2:=newperson("golang",20)fmt
Println(p2)}运行结果:&{Go语言0}&{g