**
go 語言提供了另外一種資料型別即介面,它把所有的具有共性的方法定義在一起,任何其他型別只要實現了這些方法就是實現了這個介面。
例項 /* 定義介面 */
type inte***ce_name inte***ce
/* 定義結構體 */
type struct_name struct
/* 實現介面方法 */
func (struct_name_variable struct_name) method_name1() [return_type]
… func (struct_name_variable struct_name) method_namen() [return_type]
例項 package main
import (
「fmt」
)type phone inte***ce
type nokiaphone struct
func (nokiaphone nokiaphone) call()
type iphone struct
func (iphone iphone) call()
func main()
在上面的例子中,我們定義了乙個介面phone,介面裡面有乙個方法call()。然後我們在main函式裡面定義了乙個phone型別變數,並分別為之賦值為nokiaphone和iphone。然後呼叫call()方法,輸出結果如下:
i am nokia, i can call you!
i am iphone, i can call you!
Go語言 介面
介面代表一種呼叫契約,是多個方法宣告的集合。介面要實現的是做什麼,而不關心如何做。介面最常見的使用場景是對包外提供訪問,或預留擴充套件空間。go語言介面實現機制很簡潔,只要目標型別方法集內包含介面宣告的全部方法,就被視為實現了該介面,無需做顯示宣告,當然目標型別可實現多個介面。其實介面也是一中結構,...
Go語言 介面
在go語言中,乙個介面型別總是代表著某一種型別 即所有實現它的型別 的行為。乙個介面型別的宣告通常會包含關鍵字type 型別名稱 關鍵字inte ce以及由花括號包裹的若干方法宣告。示例如下 type animal inte ce注意,介面型別中的方法宣告是普通的方法宣告的簡化形式。它們只包括方法名...
go語言介面
介面在底層的實現有兩個部分 type 和 data。在原始碼中,顯式地將 nil 賦值給介面時,介面的 type 和 data 都將為 nil。此時,介面與 nil 值判斷是相等的。但如果將乙個帶有型別的 nil 賦值給介面時,只有 data 為 nil,而 type 為 nil,此時,介面與 ni...