基本介绍
golang中的方法是作用在指定的数据类型上的(和数据类型绑定的),因此自定义类型都可以用方法,而不仅仅是struct。
方法的声明和调用
type A struct{
Num int
}
func(a A) test(){
fmt.Println(a.Num)
}
- func(a A) test(){}表示A结构体有一个方法,方法名字为test
- (a A)体现test方法和A类型绑定的。
type Person struct {
Name int
}
//Test方法是结构体Person的方法
func (p Person) Test() {
fmt.Println("test()", p.Name)
}
func main() {
//定义一个person实例
var p model.Person
p.Test() //test() 0
}
- Test方式和Person类型绑定。
- Test方法只能通过Person类型的变量来调用,而不能直接调用,也不能使用其他类型变量来调用。
- func(p Person)Test(){}中的p表示哪个Person变量调用,这个p就是一个副本,这个和函数的传参非常相似。
- p这个相当于一个变量名,可以随意修改。