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
目录
相关文章
|
28天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
2月前
|
存储 Rust Go
Go nil 空结构体 空接口有什么区别?
本文介绍了Go语言中的`nil`、空结构体和空接口的区别。`nil`是预定义的零值变量,适用于指针、管道等类型;空结构体大小为0,多个空结构体实例指向同一地址;空接口由`_type`和`data`字段组成,仅当两者均为`nil`时,空接口才为`nil`。
Go nil 空结构体 空接口有什么区别?
|
4月前
|
存储 Go
Go to Learn Go之接口
Go to Learn Go之接口
37 7
|
5月前
|
XML 存储 JSON
在Go中使用接口:实用性与脆弱性的平衡
在Go中使用接口:实用性与脆弱性的平衡
|
5月前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
5月前
|
存储 安全 程序员
|
5月前
|
存储 设计模式 Go
深入理解Go语言的接口
【8月更文挑战第31天】
22 0
|
8天前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
44 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
29天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
39 7
|
29天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
100 71