AI智能
改变未来

GoLang学习十五:方法


方法

1.1什么是方法

Go语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一 个指针。 所有给定类型的方法属于该类型的方法集

方法只是一个函数,它带有一个特殊的接收器类型, 它是在func关键字和方法名之间编写的。接收器可以是struct类型或非struct类型。接收方可以在方法内部访问。

1.2方法的语法

定义方法的语法

// 方法func (t Type) methodName(parameter list)(return list) {}// 函数func funcName(parameter list)(return list){}

示例代码

// 结构体type Worker struct {name stringage  intsex  string}// 定义方法func (w Worker) work() {fmt.Printf(\"%T\\n\",w)w.name = \"张三w\"fmt.Println(w.name, \"在工作...\")}func (wp *Worker) rest() {fmt.Printf(\"%T\\n\",wp)wp.name = \"张三wp\"fmt.Println(wp.name, \"在休息...\")}func main() {w := Worker{\"张三\",30,\"男\"}w.work() // main.Worker 张三w 在工作...fmt.Println(w) // {张三 30 男}w.rest() // *main.Worker 张三wp 在休息...fmt.Println(w) // {张三wp 30 男}w1 := &Worker{\"张三\",30,\"男\"}// (*w1).work()w1.work() // main.Worker 张三w 在工作...fmt.Println(*w1) // {张三 30 男}w1.rest() // *main.Worker 张三wp 在休息...fmt.Println(*w1) // {张三wp 30 男}}

// 定义“父类”type person struct {name stringage int}// 定义“子类”type student struct {personschool string}// 定义“子类”type worker struct {personsalary string}// 定义“父类”eat()方法func (person person) eat(){fmt.Println(\"父类方法,吃饭。。。\")}// 定义“子类”重写eat()方法func (student student) eat(){fmt.Println(\"子类方法,吃饭。。。\")}// 定义“子类”新增study()方法func (student student) study(){fmt.Println(\"子类方法,学习。。。\")}func main() {person1 := person{\"张三\",30,}fmt.Println(person1.name, person1.age) // 张三 30person1.eat()student1 := student{person{\"学生1\",18,},\"清华\",}fmt.Println(student1.name, student1.age, student1.school)student1.eat()student1.study()}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » GoLang学习十五:方法