GO语言自学_004_类的封装_类的绑定

代码:
package main

import "fmt"

/*
go 语言支持类的操作,但是没有class关键字。使用struct模拟类。
*/

// 定义一个Person类

type Person struct {
  // 属性
  name   string
  age    int
  gender string
  score  float64
}

// 绑定一些方法

func (p *Person) Eat() {
  /*
    Eat 方法绑定到Person类中
    指针形式的结构体,可以修改定义后的属性
  */
  p.name = "Chen"
}

func (p Person) Drink() {
  /*
    Drink 方法绑定到Person类中
    非指针形式的结构体,不可以修改定义后的属性
  */
  p.name = "Zen"
}

func main() {
  lily1 := Person{
  name:   "Lily",
  age:    30,
  gender: "female",
  score:  100,
}
// 复制一个lily1对象
lily2 := lily1

fmt.Println("Eat方法,使用p *Person,修改name的值")
fmt.Println("修改前lily:", lily1)
lily1.Eat()
fmt.Println("修改后lily:", lily1)

fmt.Println("Drink方法,使用p Person,非指针")
fmt.Println("修改前lily:", lily2)
lily2.Drink()
fmt.Println("修改后lily:", lily2)
}

结果:
GOROOT=C:\Program Files\Go #gosetup
GOPATH=C:\gowork #gosetup
"C:\Program Files\Go\bin\go.exe" build -o C:\Users\ASUS\AppData\Local\Temp\GoLand\___go_build_02_struct_go.exe C:\gowork\src\02_struct.go #gosetup
C:\Users\ASUS\AppData\Local\Temp\GoLand\___go_build_02_struct_go.exe
Eat方法,使用p *Person,修改name的值
修改前lily: {Lily 30 female 100}
修改后lily: {Chen 30 female 100}
Drink方法,使用p Person,非指针
修改前lily: {Lily 30 female 100}
修改后lily: {Lily 30 female 100}
posted @ 2022-09-04 20:42  顺心无忧  阅读(37)  评论(0编辑  收藏  举报