方法
在 Go 中,方法是
作用于某种类型的变量的函数,称为接收器
接收器可以是任何东西,不仅仅是 structs
,甚至是 function
,内置类型的别名类型如 int
,string
,bool
可以有一个方法,这个规则的一个例外是 interfaces
(稍后讨论)不能有方法,因为 interface 是一个抽象定义,一个方法是一个实现,试图生成一个编译错误。
结合 structs
和 methods
,你可以在面向对象的编程中得到一个非常接近的 class
。
Go 中的方法具有以下签名
func (name receiverType)
methodName(paramterList) (returnList) {}
package main
type Admin struct {
Username, Password string
}
func (admin Admin) Delete() {
fmt.Println("Admin Deleted")
}
type User struct {
ID uint64
FullName, Email string
Admin
}
func (user User) SendEmail(email string) {
fmt.Printf("Email sent to: %s\n", user.Email)
}
func main() {
admin := Admin{
"zola",
"supersecretpassword",
}
user := User{
1,
"Zelalem Mekonen",
"zola.mk.27@gmail.com",
admin,
}
user.SendEmail("Hello") // Email sent to: zola.mk.27@gmail.com
admin.Delete() // Admin Deleted
}