4-2 go封装性
作者:互联网
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) //值传递传递的是副本,引用传递传的才是真身 }
标签:封装,name,fmt,传递,func,go,Persion,rangge 来源: https://www.cnblogs.com/paad/p/11076202.html