【Golang系列】-方法
2022-03-17
方法
go语言没有面向对象的特性,也没有类对象的概念,但是,可以使用结构体来模拟这些特性,我们都知道面向对象里面有类方法等概念,我们也可以声明一些方法,属于某个结构体。
go语言方法的语法
go中的方法,是一种特殊的函数,定义于struct之上(与struct关联、绑定),被称为struct的接受者(receiver)
方法就是有接受者的函数
语法:
type mytype struct{}
func (recv mytype)my_method(para)return_type{}
func (recv *mytype)my_method(para)return_type{}
- mytype:定义一个结构体
- recv:接受该方法的结构体
- my_method:方法名称
- para:参数列表
- return_type:返回值类型
从语法格式可以看出,一个方法和一个函数非常相似,多了一个接受类型。
package main
import "fmt"
type Person struct {
name string
}
func (per Person) eat() {
fmt.Println(per.name + "eating...")
}
func (per Person) sleep() {
fmt.Println(per.name + "sleep...")
}
func main() {
var per Person
per.name = "tom"
per.eat()
per.sleep()
}
结果:
tom eating...
tom sleep...
go语言方法的注意事项
方法的receiver type并非一定要是struct类型,type定义的类型别名、slice/map/channel/func类型都可以
struct结合他的方法就等价于面向对象的类,只不过struct可以和她的方法分开,并非一定要属于同一个文件,但必须属于同一个包
方法有两种接受类型:(T Type)和(T *Type) 他们之间有区别