当前位置 : 主页 > 手机开发 > 其它 >

4-2 go封装性

来源:互联网 收集:自由互联 发布时间:2021-06-19
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)

    //值传递传递的是副本,引用传递传的才是真身

}
网友评论