您好,登錄后才能下訂單哦!
今天小編給大家分享一下golang接口如何實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
在golang中,可以使用“type 接口類型名 interface{方法名1( 參數列表1 ) 返回值列表1 方法名2( 參數列表2 ) 返回值列表2…}”語句來聲明接口;當“方法名”首字母是大寫時,且“接口類型名”首字母也是大寫時,這個方法可以被接口所在的包(package)之外的代碼訪問。
Go語言不是一種 “傳統” 的面向對象編程語言:它里面沒有類和繼承的概念。
但是Go語言里有非常靈活的接口概念,通過它可以實現很多面向對象的特性。很多面向對象的語言都有相似的接口概念,但Go語言中接口類型的獨特之處在于它是滿足隱式實現的。也就是說,我們沒有必要對于給定的具體類型定義所有滿足的接口類型;簡單地擁有一些必需的方法就足夠了。
這種設計可以讓你創建一個新的接口類型滿足已經存在的具體類型卻不會去改變這些類型的定義;當我們使用的類型來自于不受我們控制的包時這種設計尤其有用。
接口類型是對其它類型行為的抽象和概括;因為接口類型不會和特定的實現細節綁定在一起,通過這種抽象的方式我們可以讓我們的函數更加靈活和更具有適應能力。
接口是雙方約定的一種合作協議。接口實現者不需要關心接口會被怎樣使用,調用者也不需要關心接口的實現細節。接口是一種類型,也是一種抽象結構,不會暴露所含數據的格式、類型及結構。
接口聲明的格式
每個接口類型由數個方法組成。接口的形式代碼如下:
type 接口類型名 interface{
方法名1( 參數列表1 ) 返回值列表1
方法名2( 參數列表2 ) 返回值列表2
…
}
對各個部分的說明:
接口類型名:使用 type 將接口定義為自定義的類型名。Go語言的接口在命名時,一般會在單詞后面添加 er,如有寫操作的接口叫 Writer,有字符串功能的接口叫 Stringer,有關閉功能的接口叫 Closer 等。
方法名:當方法名首字母是大寫時,且這個接口類型名首字母也是大寫時,這個方法可以被接口所在的包(package)之外的代碼訪問。
參數列表、返回值列表:參數列表和返回值列表中的參數變量名可以被忽略,例如:
type writer interface{
Write([]byte) error
}
開發中常見的接口及寫法
Go語言提供的很多包中都有接口,例如 io 包中提供的 Writer 接口:
type Writer interface {
Write(p []byte) (n int, err error)
}
這個接口可以調用 Write() 方法寫入一個字節數組([]byte),返回值告知寫入字節數(n int)和可能發生的錯誤(err error)。
類似的,還有將一個對象以字符串形式展現的接口,只要實現了這個接口的類型,在調用 String() 方法時,都可以獲得對象對應的字符串。在 fmt 包中定義如下:
type Stringer interface {
String() string
}
Stringer 接口在Go語言中的使用頻率非常高,功能類似于 Java 或者 C# 語言里的 ToString 的操作。
Go語言的每個接口中的方法數量不會很多。Go語言希望通過一個接口精準描述它自己的功能,而通過多個接口的嵌入和組合的方式將簡單的接口擴展為復雜的接口。本章后面的小節中會介紹如何使用組合來擴充接口。
以上就是“golang接口如何實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。