package mainimport " fmt " // 定义结构体 type Persion struct { // 定于结构体属性 name string age int sex bool hobby [] string } /* 封装结构体的方法- 无论方法的主语定于为止类型还是指针类型,对象值和对
package main import "fmt" //定义结构体 type Persion struct { //定于结构体属性 name string age int sex bool hobby []string } /* 封装结构体的方法 - 无论方法的主语定于为止类型还是指针类型,对象值和对象指针都能够正常访问 -通常会将主语定义为指针累 */ func (p Persion) Eat() { fmt.Printf("%s爱饕餮\n", p.name) } func (p Persion) Drink() { fmt.Printf("%s爱喝酒\n", p.name) } func (p Persion) Love() { fmt.Printf("%s是有感情的\n", p.name) } func MakeHimlove(p Persion) { p.Love() } func MakeHisLove(p *Persion) { p.Love() } func main01() { //创建空白的Persion 对象(object)/实例(instance) rangge := Persion{} //设置其属性 rangge.name = "让哥" //访问其方法 rangge.Eat() rangge.Drink() rangge.Love() } func main012() { //创建对象是给指定属性赋值,可以不必全部赋值 //rangge := Persion{name: "西门阿让", sex: true, age: 9} //创建对象时按顺序给所有属性赋值 rangge := Persion{"西门阿让", 8, true, []string{"撸代码"}} rangge.Eat() } func main() { rangge := Persion{"西门阿让", 8, true, []string{"撸代码"}} //要求传递值就必须传递值 MakeHimlove(rangge) //要求传递指针就必须传递指针/地址/引用 MakeHisLove(&rangge) //值传递传递的是副本,引用传递传的才是真身 }