感觉比java玄幻啊~~~
package main
import (
"fmt"
)
type notifier interface{
notify()
}
type user struct {
name string
email string
}
func (u *user) notify() {
fmt.Printf("Sending user email to %s<%s>\n",
u.name,
u.email)
}
type admin struct {
name string
email string
}
func (a *admin) notify() {
fmt.Printf("Sending admin email to %s<%s>\n",
a.name,
a.email)
}
//main is the entry of the program
func main() {
bill := user{"Bill", "[email protected]"}
sendNotification(&bill)
lisa := admin{"Bill", "[email protected]"}
sendNotification(&lisa)
}
func sendNotification(n notifier) {
n.notify()
}