C語言中文網 目錄
首頁 > Go語言教程 > Go語言接口 閱讀:3,809

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

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo