package main
import ( "fmt" )
//notifIEr 是一个定义了 //通知类行为的接口 type notifIEr interface { notify() }
//user 在程序里定义了一个用户类型 type user struct { name string email string }
//通过user类型的指针 //调用的方法 func (u *user) notify() { fmt.Printf("Sending user email to %s<%s>\n", u.name, u.email) }
//admin 代表一个拥有权限的管理员用户 type admin struct { user level string }
//通过admin类型的指针 //调用的方法 func (s *admin) notify() { fmt.Printf("Sending admin email to %s<%s>\n", s.name, s.email) }
//main是应用程序的入口 func main() { //创建一个admin用户 ad := admin{ user: user{ name: "john smith", email: " [email protected]", }, level: "super", }
//给admin用户发送一个通知 //接口的嵌入的内部类型实现并没有提升到 //外部类型 sendNotification(&ad)
//我们可以直接访问内部类型的方法 ad.user.notify()
//内部类型的方法没有被提升 ad.notify() }
//sendNotification接受一个实现了notifIEr接口的值 //并发送通知 func sendNotification(n notifIEr) { n.notify() } //outprint //Sending admin email to john smith< [email protected]> //Sending user email to john smith< [email protected]> //Sending admin email to john smith< [email protected]> 总结
以上是内存溢出为你收集整理的golang.GoInAction.5-62全部内容,希望文章能够帮你解决golang.GoInAction.5-62所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)