### 接口嵌入
> **接口嵌入,又叫接口组合,其他语言中叫继承。我早就感觉这个接口结构体就和py中的类很像,都是方法的组合**
```
package main
import "fmt"
// 声明一个接口
type One interface {
Sing()
}
// 声明一个接口
type Tow interface {
One
Dance()
}
// 声明一个接口
type Three interface {
One
Teach()
}
// 声明一个结构体
type Aa struct {
Name string
}
//声明方法
func (aa *Aa) Sing() {
fmt.Println(aa.Name + "会唱歌")
}
//声明方法
func (aa *Aa) Dance() {
fmt.Println(aa.Name + "会跳舞")
}
//声明结构体
type Bb struct {
Name string
}
//声明方法
func (bb *Bb) Sing() {
fmt.Println(bb.Name + "会唱歌")
}
//声明方法
func (bb *Bb) Teach() {
fmt.Println(bb.Name + "在学习跳舞")
}
func main() {
// 实例化结构体
var aa Aa = Aa{"Pony"}
var bb Bb = Bb{Name: "LiMing"}
// 操控方法
aa.Sing()
aa.Dance()
bb.Sing()
bb.Teach()
}
结果:
Pony会唱歌
Pony会跳舞
LiMing会唱歌
LiMing在学习跳舞
```
我解释一下,定义了三个接口,One,Two,Three,定义了两个结构体,Aa,Bb。其中 Two和Three 都嵌入了 One 接口,拥有了 One接口里面的Sing() 方法。而上面案例结构体Bb要实现One接口里面的Sing()方法,就要实现One接口才行。但是我发现,不嵌入One一样可以实现,是不是出现bug了。我才估计官方更新了,因为 我研究也感觉麻烦
- 安装开发环境
- 安装开发环境
- 安装详细教程
- 引入包
- Go语言基础
- 基本变量与数据类型
- 变量
- 数据类型
- 指针
- 字符串
- 代码总结
- 常量与运算符
- 常量
- 运算符
- 流程控制
- if判断
- for循环
- switch分支
- goto跳转
- 斐波那契数列
- Go语言内置容器
- 数组
- 切片
- 映射
- 函数
- 函数(上)
- 函数(中)
- 函数(下)
- 小节
- 包管理
- 结构体
- 结构体(上)
- 结构体(中)
- 结构体(下)
- 小节
- 错误处理
- 错误处理
- 宕机
- 错误应用
- 小节
- 文件操作
- 获取目录
- 创建和删除目录
- 文件基本操作(上)
- 文件基本操作(中)
- 文件基本操作(下)
- 处理JSON文件
- 接口与类型
- 接口的创建与实现
- 接口赋值
- 接口嵌入
- 空接口
- 类型断言(1)
- 类型断言(2)
- 小节
- 并发与通道
- goroutine协程
- runtime包
- 通道channel
- 单向通道channel
- select
- 线程同步
- 多线程的深入学习
- http编程
- http简介
- Client和Request
- get请求
- post请求
- 模块函数方法
- 模块
- fmt库,模块
- 项目练习
- 爬虫:高三网
- 爬虫:快代理
- 爬虫:快代理2
- 多线程:通道思路
- 多线程爬虫:快代理