golang interface 多态

原文链接:http://www.52bd.net/code/210.html

demo:

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)
}

//sendNotification 接受一个实现了notifier接口的值
func sendNotification(n notifier){
    n.notify()
}

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

    admin := admin{"admin","344085057@qq.com"}
    sendNotification(&admin)
}

运行结果:

[root@golang]# go run interface.go 
用户: &{lp 344085057@qq.com}
管理员: &{admin 344085057@qq.com}