方法是某种特定类型的函数
方法能给用户的类型添加新的行为。
实际上也是函数,只是在声明时,在关键字func和方法名之间增加了一个参数
//展示如何声明并使用方法
package main
import "fmt"
//user 在程序里定义了一个用户类型
type user struct {
name string
email string
}
//notify 使用值接收者实现了一个方法
// Go语言里有两种类型的接收者,值接收者和指针接收者,调用时,会使用这个值的副本来执行
//如果使用值接收者
func (u user) notify() {
fmt.Printf("Sending User Email to %s<%s>\n",
u.name,
u.email)
}
//使用指针接收者实现了一个方法
func (u *user) changeEmail(email string) {
u.email = email
}
func main() {
//user 类型的值可以用来调用
//使用值接收者声明的方法
bill := user{"Bill", "[email protected]"}
bill.notify()
//指向user类型的指针也可以用来调用
//使用值接收者声明的方法
lisa := &user{"lisa", "[email protected]"}
lisa.notify()
//user 类型的值可以用来调用
//使用值接收者声明的方法
bill.changeEmail("[email protected]")
bill.notify()
//指向user类型的指针可以用来调用
//使用指针接收者声明的方法
lisa.changeEmail("[email protected]")
lisa.notify()
}
GO 语言里有两种类型的接收者:值接收者和指针接收者