7 1 介面摘自《go語言學習筆記》

2021-08-29 05:17:40 字數 1109 閱讀 2061

1,介面實現機制:只要目標方法集內包含介面宣告的全部方法,就被視為實現了該介面,無需做顯示宣告。目標型別可以實現多個介面。

2,內部實現,介面自身也是一種結構型別

type iface struct
不能有欄位

不能定義自己的方法。

只能宣告方法,不能實現。

可嵌入其它介面型別。

3,介面通常以er作為介面字尾,方法名是宣告組成部分,但引數名可不同或省略

type tester inte***ce 

type data struct {}

func(*data) test(){}

func(data) string() string

func main()

4,如果介面沒有任何方法,那麼就是個空介面(inte***ce{}),它的用途類似物件導向裡的跟型別object,可被賦值為任何型別的物件

5,可以像匿名字段那樣,嵌入其它介面。目標型別方法集中必須擁有包含嵌入介面方法在內的全部方法,才算實現了該介面

type stringer inte***ce 

type tester inte***ce

type data struct {}

func (*data) test() {}

func (data) string() string

func main()

6,超級介面變數可以隱式轉換為子集,反過來不行

func pp(a stringer)

func main()

7,支援匿名介面型別,可直接用於變數定義,或作為結構字段型別

package main

import "fmt"

type data struct {}

func (data) string() string

type node struct

}func main() = data{}

n := node

fmt.println(n.data.string())

}

Go語言學習筆記(七)介面

go語言中的介面作用類似於c 中的虛函式機制,可以提供乙個統一呼叫的方式。介面是雙方約定的一種合作協議。介面實現者不需要關心介面會被怎樣使用,呼叫者也不需要關心介面的實現細節。介面是一種型別,也是一種抽象結構,不會暴露所包含資料的格式 型別及結構。每個介面型別由多個方法組成。type 介面型別名 i...

Go語言學習筆記 PART9 介面

go語言不是傳統的物件導向程式設計語言,沒有類和繼承的概念,但是有非常靈活的介面,可以實現物件導向的特徵,介面提供一種方式來說明物件的行為 type namer inte ce 複製 1.定義乙個介面 type shaper inte ce type square struct 2.square型別...

go 型別 摘自go語言學習筆記

從計算機實現角度來看,變數是一段或多段用來儲存資料的記憶體 go變數總是有固定的資料型別,型別決定了變數記憶體的長度和儲存格式 通過型別轉換或指標操作,我們可用不同方式修改變數值,但這並不意味著改變了變數型別 因為記憶體分配發生在執行期,所以在編碼階段我們用乙個易於閱讀的名字來表示這段記憶體。實際上...