介面多型性
介面提供了一種指定物件行為的方法,如果有什麼可以做到這一點,那麼它可以在這裡使用。介面定義了一組方法,但這些方法不包含程式碼,因為它們是抽象的,或者實現留給介面的使用者。與大多數面嚮物件語言不同,介面可以包含 Go 中的變數。
多型性是物件導向程式設計的本質:只要它們遵循相同的介面,就能統一處理不同型別的物件。Go 介面以非常直接和直觀的方式提供此功能
package main
type Runner interface {
Run()
}
type Admin struct {
Username, Password string
}
func (admin Admin) Run() {
fmt.Println("Admin ==> Run()");
}
type User struct {
ID uint64
FullName, Email string
}
func (user User) Run() {
fmt.Println("User ==> Run()")
}
// RunnerExample takes any type that fullfils the Runner interface
func RunnerExample(r Runner) {
r.Run()
}
func main() {
admin := Admin{
"zola",
"supersecretpassword",
}
user := User{
1,
"Zelalem Mekonen",
"zola.mk.27@gmail.com",
}
RunnerExample(admin)
RunnerExample(user)
}