感觉比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", "bill@email.com"} sendNotification(&bill) lisa := admin{"Bill", "lisa@email.com"} sendNotification(&lisa) } func sendNotification(n notifier) { n.notify() }