Go中的接口多态及嵌入类

简介: 我感觉个还好理解, 至少比当初入JAVA时更容易理解, 可能是以前的学习为现在打下了基础吧。 又或许是最近三年的程序编写,长了见识吧~

我感觉个还好理解,

至少比当初入JAVA时更容易理解,

可能是以前的学习为现在打下了基础吧。

又或许是最近三年的程序编写,长了见识吧~



package main

import (
	"fmt"
)

type notifier interface {
	notify()
}

type user struct {
	name  string
	email string
}

type admin struct {
	user
	level string
}

func (u user) notify() {
	fmt.Printf("Sending User Email To %s<%s>\n",
		u.name,
		u.email)
}

func (u admin) notify() {
	fmt.Printf("Sending Admin Email To %s<%s>\n",
		u.name,
		u.email)
}

func (u *user) changeEmail(email string) {
	u.email = email
}

func main() {
	bill := user{"Bill", "bill@email.com"}
	sendNotification(bill)

	lisa := admin{
		user: user{
			name:  "Lisa",
			email: "lisa@email.com",
		},
		level: "super",
	}
	sendNotification(lisa)

}

func sendNotification(n notifier) {
	n.notify()
}

7fc90806191303aefaca24bb102d9df81eae9427
目录
相关文章
|
6天前
|
Go
go接口定义、实现、多态
go接口定义、实现、多态
14 4
|
12天前
|
中间件 Go
go语言后端开发学习(三)——基于validator包实现接口校验
go语言后端开发学习(三)——基于validator包实现接口校验
|
12天前
|
Go 数据库
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
|
12天前
|
存储 Go
go语言进阶篇——接口
go语言进阶篇——接口
|
17天前
|
Go 数据安全/隐私保护
go 基于gin编写encode、decode、base64加密接口
go 基于gin编写encode、decode、base64加密接口
14 2
|
24天前
|
Go
掌握Go语言:Go语言接口精解,实现多态性与灵活性的利器(31)
掌握Go语言:Go语言接口精解,实现多态性与灵活性的利器(31)
|
28天前
|
存储 Go iOS开发
Go 语言接口
Go 语言接口
16 2
|
2月前
|
程序员 Go
|
Java Go
go语言多态接口样例
感觉比java玄幻啊~~~ package main import ( "fmt" ) type notifier interface{ notify() } type user struct { name string email string } func (u *user) notify() { fmt.
966 0
|
1天前
|
IDE Linux Go
记录一个go语言与IDE之间的问题
【7月更文挑战第1天】本文介绍在IDE中调试Go应用可能遇到的问题。当问题与IDE的自动完成有关,可以试着使用其他编辑器如Linux的vim是否无此问题。这可以验证表明IDE可能不完全兼容最新语言版本,建议使用无自动检测工具临时解决。
16 0