加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang.GoInAction.5-62

发布时间:2020-12-16 09:31:42 所属栏目:大数据 来源:网络整理
导读://《Go 语言实战》 p110_listing60.go //这个示例程序展示当内部类型和外部类型要 //实现同一个接口的方法 ? package main ? import ( ????"fmt" ) ? //notifier 是一个定义了 //通知类行为的接口 type notifier interface { ????notify() } ? //user 在程序
//《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]>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读