Go語言學習筆記 PART9 介面

2021-09-24 07:33:20 字數 1420 閱讀 2371

go語言不是傳統的物件導向程式設計語言,沒有類和繼承的概念,但是有非常靈活的介面,可以實現物件導向的特徵,介面提供一種方式來說明物件的行為

type namer inte***ce 

複製**

// 1. 定義乙個介面

type shaper inte***ce

type square struct

// 2. square型別指標實現介面中的方法

func

(sq *square)

area

()float32

type rectangle struct

// 3. rectangle型別實現介面中的方法

func

(r rectangle)

area

()float32

func

main

()

q := &square

// 4. 通過介面陣列接收兩個變數

shapes := shaper

fmt.println("looping through shapes for area ...")

for n, _ := range shapes

}複製**

// 1. 定義介面readwrite和lock

type readwrite inte***ce

type lock integer

// 2. 在介面中新增了兩個匿名字段:readwrite和lock,實現介面巢狀

type file inte***ce

複製**

介面型別變數可以包含任何型別的值,所以需要在執行時檢測變數中儲存的值的實際型別

t := vari.(t)

// 或者可以使用下面這種方式

if t, ok := vari.(t); ok

複製**

vari必須是乙個介面型別變數

介面變數的型別也可以使用switch來檢測

switch t := areaintf.(type) 

複製**

type - switch中不允許有fallthrough

type any inte***ce{}

複製**

入門教程推薦: github.com/unknwon/the…

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

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

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

1,介面實現機制 只要目標方法集內包含介面宣告的全部方法,就被視為實現了該介面,無需做顯示宣告。目標型別可以實現多個介面。2,內部實現,介面自身也是一種結構型別 type iface struct不能有欄位 不能定義自己的方法。只能宣告方法,不能實現。可嵌入其它介面型別。3,介面通常以er作為介面字...

Python學習筆記 part 9

ide vscode python版本 python3.6 學習教材 python程式設計從入門到實踐 人民郵電出版社 異常 異常一般用try except 塊解決.try print 5 0 except zerodivisionerror print you can t divide by ze...