久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

Go語言中類型與接口有什么關系

在Go語言中,類型和接口之間有一對多和多對一的關系。一個類型可以同時實現多個接口,而接口間彼此獨立,不知道對方的實現。多個類型也可以實現相同的接口:一個接口的方法,不一定需要由一個類型完全實現,接口的方法可以通過在類型中嵌入其他類型或者結構體來實現。也就是說,使用者并不關心某個接口的方法是通過一個類型完全實現的,還是通過多個結構嵌入到一個結構體中拼湊起來共同實現的。

Go語言中類型與接口有什么關系

本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

Go語言類型與接口的關系

在Go語言中類型和接口之間有一對多和多對一的關系,下面將列舉出這些常見的概念,以方便讀者理解接口與類型在復雜環境下的實現關系。

一個類型可以實現多個接口

一個類型可以同時實現多個接口,而接口間彼此獨立,不知道對方的實現。

網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,連接的一端稱為一個 Socket。Socket 能夠同時讀取和寫入數據,這個特性與文件類似。因此,開發中把文件和 Socket 都具備的讀寫特性抽象為獨立的讀寫器概念。

Socket 和文件一樣,在使用完畢后,也需要對資源進行釋放。

把 Socket 能夠寫入數據和需要關閉的特性使用接口來描述,請參考下面的代碼:

type Socket struct { } func (s *Socket) Write(p []byte) (n int, err error) {     return 0, nil } func (s *Socket) Close() error {     return nil }
登錄后復制

Socket 結構的 Write() 方法實現了 io.Writer 接口:

type Writer interface {     Write(p []byte) (n int, err error) }
登錄后復制

同時,Socket 結構也實現了 io.Closer 接口:

type Closer interface {     Close() error }
登錄后復制

使用 Socket 實現的 Writer 接口的代碼,無須了解 Writer 接口的實現者是否具備 Closer 接口的特性。同樣,使用 Closer 接口的代碼也并不知道 Socket 已經實現了 Writer 接口,如下圖所示。

Go語言中類型與接口有什么關系
圖:接口的使用和實現過程

在代碼中使用 Socket 結構實現的 Writer 接口和 Closer 接口代碼如下:

// 使用io.Writer的代碼, 并不知道Socket和io.Closer的存在 func usingWriter( writer io.Writer){     writer.Write( nil ) } // 使用io.Closer, 并不知道Socket和io.Writer的存在 func usingCloser( closer io.Closer) {     closer.Close() } func main() {     // 實例化Socket     s := new(Socket)     usingWriter(s)     usingCloser(s) }
登錄后復制

usingWriter() 和 usingCloser() 完全獨立,互相不知道對方的存在,也不知道自己使用的接口是 Socket 實現的。

多個類型可以實現相同的接口

一個接口的方法,不一定需要由一個類型完全實現,接口的方法可以通過在類型中嵌入其他類型或者結構體來實現。也就是說,使用者并不關心某個接口的方法是通過一個類型完全實現的,還是通過多個結構嵌入到一個結構體中拼湊起來共同實現的。

Service 接口定義了兩個方法:一個是開啟服務的方法(Start()),一個是輸出日志的方法(Log())。使用 GameService 結構體來實現 Service,GameService 自己的結構只能實現 Start() 方法,而 Service 接口中的 Log() 方法已經被一個能輸出日志的日志器(Logger)實現了,無須再進行 GameService 封裝,或者重新實現一遍。所以,選擇將 Logger 嵌入到 GameService 能最大程度地避免代碼冗余,簡化代碼結構。詳細實現過程如下:

// 一個服務需要滿足能夠開啟和寫日志的功能 type Service interface {     Start()  // 開啟服務     Log(string)  // 日志輸出 } // 日志器 type Logger struct { } // 實現Service的Log()方法 func (g *Logger) Log(l string) { } // 游戲服務 type GameService struct {     Logger  // 嵌入日志器 } // 實現Service的Start()方法 func (g *GameService) Start() { }
登錄后復制

代碼說明如下:

  • 第 2 行,定義服務接口,一個服務需要實現 Start() 方法和日志方法。

  • 第 8 行,定義能輸出日志的日志器結構。

  • 第 12 行,為 Logger 添加 Log() 方法,同時實現 Service 的 Log() 方法。

  • 第 17 行,定義 GameService 結構。

  • 第 18 行,在 GameService 中嵌入 Logger 日志器,以實現日志功能。

  • 第 22 行,GameService 的 Start() 方法實現了 Service 的 Start() 方法。

此時,實例化 GameService,并將實例賦給 Service,代碼如下:

var s Service = new(GameService) s.Start() s.Log(“hello”)
登錄后復制

s 就可以使用 Start() 方法和 Log() 方法,其中,Start() 由 GameService 實現,Log() 方法由 Logger 實現。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
卡一卡二国产精品| jizzjizz中国精品麻豆| 日韩欧美午夜| 国产极品嫩模在线观看91精品| 日韩av在线免费观看不卡| 久久大逼视频| 视频在线观看一区二区三区| 免费欧美在线视频| 欧美精品国产一区| 久久精品国产亚洲aⅴ | 欧美aa在线观看| 成人免费网站www网站高清| 久久久久中文| 丝袜美腿亚洲一区二区图片| 免费高清在线一区| 91九色综合| 国产精品欧美在线观看| 97精品在线| 亚洲一区日韩| 国产日韩三级| 久久精品动漫| 日本va欧美va瓶| 成人高清一区| 婷婷精品在线| 国产欧美日韩在线一区二区 | 日韩毛片在线| 日韩中文字幕| 色综合五月天| 女人av一区| 欧美精品观看| av亚洲在线观看| 国产精品视频一区视频二区| 亚洲高清不卡| 精品欠久久久中文字幕加勒比| 久久人人精品| 精品五月天堂| 天堂久久av| 精品一区毛片| 国产精品精品国产一区二区| 少妇精品久久久一区二区三区| 新版的欧美在线视频| 日本aⅴ精品一区二区三区| 国产v综合v| 国产精品视频3p| 日韩高清一级| 国产精品普通话对白| 日韩综合精品| 精品久久亚洲| 国产亚洲一区| 日韩在线电影| 夜久久久久久| 久久精选视频| 日韩久久精品| 中文字幕在线视频久| 国产精品一区2区3区| 亚洲欧洲av| 亚洲影视一区| 模特精品在线| 悠悠资源网久久精品| 婷婷精品视频| 久久视频精品| 日韩天堂在线| 欧美日韩在线观看视频小说| 精精国产xxxx视频在线野外| 国精品产品一区| 国产成人精品一区二区三区视频 | 蜜桃久久精品一区二区| 影音先锋久久| 久久国产欧美| 黄色成人在线网址| 久久不见久久见中文字幕免费| 久久国产精品免费一区二区三区| 日本v片在线高清不卡在线观看| 亚洲精品免费观看| 91精品丝袜国产高跟在线| 国产精品中文| 日本欧美国产| 午夜欧美在线| 亚洲精一区二区三区| 国产中文欧美日韩在线| 九九久久国产| 国产精品手机在线播放| 国产手机视频一区二区| 精品美女视频| 欧美性感美女一区二区| 蜜桃av一区二区在线观看| 欧美综合精品| 99精品国产一区二区三区| 日韩激情av在线| 亚洲一级少妇| 亚洲精品国模| sm久久捆绑调教精品一区| 好吊视频一区二区三区四区| 日韩极品在线观看| 日韩欧美2区| 中文在线一区| 欧美成人基地 | 欧美 日韩 国产一区二区在线视频| 国产探花在线精品| 制服诱惑一区二区| 国产福利片在线观看| 国产精品va| 天堂va在线高清一区| 国产欧美日韩一区二区三区在线| 在线一区免费观看| 首页欧美精品中文字幕| 亚洲欧美日本视频在线观看| 日韩在线高清| 欧美www视频在线观看| 欧美激情福利| 久久一区国产| 精品国产乱码久久久久久1区2匹| 国产精品久久久久av蜜臀| 欧美亚洲综合视频| 综合亚洲视频| 日本午夜精品久久久久| 日韩二区在线观看| 欧美日韩中出| 老鸭窝一区二区久久精品| 国产精品入口久久| 久久精品免视看国产成人| 国产精品黄色| 久久影院一区| 日本精品黄色| 国内精品99| 亚洲美女久久| 98精品视频| 日韩网站在线| 综合五月婷婷| 美女视频黄免费的久久| 亚洲精品一级二级| 人人爽香蕉精品| 国产精品一区二区三区四区在线观看 | 日韩精品欧美精品| 国产极品一区| 久久伦理在线| 日韩精品久久久久久久软件91| 69堂免费精品视频在线播放| 国产精品v一区二区三区| 精品国产一区二区三区av片| 欧美一区二区性| 亚洲香蕉视频| 波多视频一区| 视频一区视频二区中文字幕| 欧美99久久| 在线免费观看亚洲| 手机精品视频在线观看| 亚洲婷婷丁香| 久久精品国产成人一区二区三区| 国产资源在线观看入口av| 欧美日韩国产在线观看网站 | 国产毛片久久| 国产精品色在线网站| 日韩三区免费| 综合亚洲自拍| 日韩国产欧美| 视频一区视频二区在线观看| 日韩在线网址| 亚洲欧美日本国产| 欧美黄色精品| 亚洲婷婷免费| 欧美亚洲tv| 日韩精品久久久久久久电影99爱| 国产一区白浆| 精品99在线| 日韩一区二区三区四区五区| 97精品一区二区| 日韩不卡一二三区| 日韩精品一区二区三区免费观影 | 久久三级视频| 国产精品一区二区精品| 亚洲激情中文| 亚洲人成在线网站| 国产欧美自拍| 一区二区精彩视频| 亚洲激情婷婷| 中文字幕在线看片| 国产伦理久久久久久妇女| 久久精品在线| 成人精品动漫一区二区三区| 免费在线看一区| 欧美日韩国产探花| 成人啊v在线| www.九色在线| 国产在线日韩精品| 国产精品视频一区二区三区综合| 亚洲精品福利| 亚洲一区日韩| 国产午夜精品一区二区三区欧美| 三级小说欧洲区亚洲区| 日本一区二区免费高清| 久久免费精品| 欧美激情日韩| 老司机精品视频网| 麻豆免费精品视频| 日韩二区在线观看| 日韩激情网站| 国产精品久久久久久久免费软件| 欧美视频精品全部免费观看| 国产欧美久久一区二区三区|