### 接口嵌入
> **接口嵌入,又叫接口組合,其他語言中叫繼承。我早就感覺這個接口結構體就和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
- 多線程:通道思路
- 多線程爬蟲:快代理