75_Go基础_1_42 方法
1 package main 2 3 import "fmt" 4 5 //1.定义一个工人结构体 6 type Worker struct { 7 name string 8 age int 9 sex string 10 } 11 12 type Cat struct { 13 color string 14 age int 15 } 16 17 // 2.定义行为方法 18 func (w Worker) work() { //w = w1 19 fmt.Println(w.name, "在工作。。。") 20 } 21 22 func (p *Worker) rest() { //p = w2 ,p = w1的地址 23 fmt.Println(p.name, "在休息。。") 24 } 25 26 func (p *Worker) printInfo() { 27 fmt.Printf("工人姓名:%s,工人年龄:%d,工人性别:%s\n", p.name, p.age, p.sex) 28 } 29 30 func (p *Cat) printInfo() { 31 fmt.Printf("猫咪的颜色:%s,年龄:%d\n", p.color, p.age) 32 } 33 34 func main() { 35 /* 36 方法:method 37 一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。 38 所有给定类型的方法属于该类型的方法集 39 40 41 语法: 42 func (接受者) 方法名(参数列表)(返回值列表){ 43 44 } 45 46 总结:method,同函数类似,区别需要有接受者。(也就是调用者) 47 48 对比函数: 49 A:意义 50 方法:某个类别的行为功能,需要指定的接受者调用 51 函数:一段独立功能的代码,可以直接调用 52 53 B:语法 54 方法:方法名可以相同,只要接受者不同 55 函数:命名不能冲突 56 57 */ 58 59 w1 := Worker{name: "王二狗", age: 30, sex: "男"} 60 w1.work() // 王二狗 在工作。。。 61 62 w2 := &Worker{name: "Ruby", age: 34, sex: "女"} 63 fmt.Printf("%T\n", w2) // *main.Worker 64 w2.work() // Ruby 在工作。。。 65 66 w2.rest() // Ruby 在休息。。 67 w1.rest() // 王二狗 在休息。。 68 69 w2.printInfo() // 工人姓名:Ruby,工人年龄:34,工人性别:女 70 c1 := Cat{color: "白色的", age: 1} 71 c1.printInfo() // 猫咪的颜色:白色的,年龄:1 72 73 }