书上看的。慢慢领会。。
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 { user level string } func (a *admin) nofity() { fmt.Printf("Sending admin email to %s<%s>\n", a.name, a.email, a.level) } func main() { ur := user{ name: "Bill smith", email: "Bill@email.com", } ad := admin{ user: user{ name: "John smith", email: "John@email.com", }, level: "super", } sendNotification(&ur) sendNotification(&ad) ad.user.notify() ad.nofity() } func sendNotification(n notifier) { n.notify() }