首頁 >後端開發 >Golang >golang介面怎麼實現

golang介面怎麼實現

青灯夜游
青灯夜游原創
2022-12-23 10:54:495917瀏覽

在golang中,可以使用「type 介面類型名稱interface{方法名稱1( 參數列表1 ) 傳回值列表1 方法名稱2( 參數列表2 ) 傳回值列表2…}」語句來宣告接口;當「方法名」首字母是大寫時,且「介面類型名稱」首字母也是大寫時,這個方法可以被介面所在的套件(package)以外的程式碼存取。

golang介面怎麼實現

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

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語言希望透過一個介面精準描述它自己的功能,而透過多個介面的嵌入和組合的方式將簡單的介面擴展為複雜的介面。本章後面的小節會介紹如何使用組合來擴充介面。

【相關推薦:Go影片教學程式設計教學

以上是golang介面怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn