其他分享
首页 > 其他分享> > 4-2 go封装性

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