标签 多态 下的文章

golang中的多态



package main

import (
    "fmt"

)
//通知行为的接口
type notifier interface{
    notify()
}

//自定义的用户类型
type user struct{
    name string
    email string 
}
//notify是用指针接收者实现的方法
func (u *user ) notify(){
    fmt.Println("用户:",u)
}


//自定义的管理员类型
type admin struct{
    name string
    email string 
}
//notify是用指针接收者实现的方法
func (u *admin ) notify(){
    fmt.Println("管理员:",u)
}


func main(){
    user := user{"lp","344085057@qq.com"}
    sendNotification(&user)

    admin := admin{"admin","344085057@qq.com"}
    sendNotification(&admin)
}
//sendNotification 接受一个实现了notifier接口的值
func sendNotification(n notifier){
    n.notify()
}
运行结果

用户: &{lp 344085057@qq.com}
管理员: &{admin 344085057@qq.com}