标签:amp span val import use nbsp cat lis receiver
// Sample program to show how polymorphic behavior with interfaces. package main import ( "fmt" ) // notifier is an interface that defines notification // type behavior. type notifier interface { notify() } // user defines a user in the program. type user struct { name string email string } // notify implements the notifier interface with a pointer receiver. func (u *user) notify() { fmt.Printf("Sending user email to %s<%s>\n", u.name, u.email) } // admin defines a admin in the program. type admin struct { name string email string } // notify implements the notifier interface with a pointer receiver. func (a *admin) notify() { fmt.Printf("Sending admin email to %s<%s>\n", a.name, a.email) } // main is the entry point for the application. func main() { // Create a user value and pass it to sendNotification. bill := user{"Bill", "bill@email.com"} sendNotification(&bill) // Create an admin value and pass it to sendNotification. lisa := admin{"Lisa", "lisa@email.com"} sendNotification(&lisa) } // sendNotification accepts values that implement the notifier // interface and sends notifications. func sendNotification(n notifier) { n.notify() }
输出
Sending user email to Bill<bill@email.com>
Sending admin email to Lisa<lisa@email.com>
标签:amp span val import use nbsp cat lis receiver
原文地址:https://www.cnblogs.com/sea-stream/p/10357568.html