golang.GoInAction.5-62

golang.GoInAction.5-62,第1张

概述//《Go 语言实战》 p110_listing60.go //这个示例程序展示当内部类型和外部类型要 //实现同一个接口的方法   package main   import (     "fmt" )   //notifier 是一个定义了 //通知类行为的接口 type notifier interface {     notify() }   //user 在程序里定义了一个用户类型 ty //《Go 语言实战》 p110_Listing60.go //这个示例程序展示当内部类型和外部类型要 //实现同一个接口的方法

 

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存