什么是方法?
方法其实就是一个函数,在 func
这个关键字和方法名中间加入了一个特殊的接收器类型。
接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。
语法
func (a Person) getName() {
} //类型为Person,方法是getName
指针接收器与值接收器
func (值)changeName(name string):在内部修改值,不会影响外部的值
func (指针)changeName(name string):在内部修改值,会影响外部的值
什么时候使用指针接收器、什么时候值接收器
想修改原值,就用指针接收器
其他情况使用值接收器
匿名字段的方法
在方法中使用值接收器 与 在函数中使用值参数
在方法中使用指针接收器 与 在函数中使用指针参数
不管是指针接收器还是值接收器,都可以使用值来调用
不管是指针接收器还是值接收器,都可以使用指针来调用
函数中,是什么参数,就得传什么参数
package main import "fmt" type Person2 struct { name string age int sex int } //方法中使用值接收器 func (a Person2)printName() { fmt.Println(a.name) } //方法中使用指针接收器 func (a *Person2)printName2() { fmt.Println(a.name) } //函数中使用值参数 func printName(a Person2) { fmt.Println(a.name) } //在函数中使用指针参数 func printName2(a *Person2) { fmt.Println(a.name) } func main() { //p:=&Person2{name:"xy"} //调用值接收器 //p.printName() //调用指针接收器 //p.printName2() //调用值函数 //printName(p) //调用指针函数 //printName2(&p) }