type person struct{
name string
age int
sex bool}func(p *person)Func1(newName string){
p.name = newName
}func(p person)Func2(newAge int){
p.age = newAge
}funcmain(){
p := person{
name:"zzs",
age:18,
sex:false,}
p.Func1("ywj")//(指针接收者)会修改
fmt.Println(p)
p.Func2(999)//(值接收者)不会修改
fmt.Println(p)}
5.任意类型添加方法
type myInt intfunc(i myInt)print(){
fmt.Println(i)}funcmain(){var myInt myInt =10
myInt.print()}
6.匿名结构体实现继承关系
type animal struct{
name string}func(a *animal)move(){
fmt.Println(a.name,":移动")}type dog struct{
animal
}func(d *dog)study(){
fmt.Println("dog学习")}type cat struct{
animal
}func(c *cat)sleep(){
fmt.Println("cat睡觉")}func(c *cat)move(){
fmt.Println("cat重写移动")}funcmain(){
d :=&dog{
animal{name:"zzs"},}
c :=&cat{
animal{name:"ywj"},}
d.study()
c.sleep()
d.move()
c.move()}
7.结构体与json
//使用json序列化结构体,字段的名称需要大写,否则访问不到type person struct{
Name string`json:"name"`
Age int`json:"age"`
Sex bool`json:"sex"`}funcmain(){
p := person{
Name:"zzs",
Age:18,
Sex:false,}
buffer, err := json.Marshal(p)if err !=nil{
fmt.Println(err)return}
fmt.Println(string(buffer))
fmt.Println("=========================")//{"name":"zzs","age":18,"sex":false}
jsonStr :="{\"name\":\"zzs\",\"age\":18,\"sex\":false}"var pp person
json.Unmarshal([]byte(jsonStr),&pp)
fmt.Println(pp)}