方法
在 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
}