Go語言介面定義與用法示例

2022-09-24 21:09:08 字數 1054 閱讀 3117

在go中,介面inte***ce其實和其他語言的介面意思也沒什麼區別。inte***ce理解其為一種型別的規範或者約定。一種型別是不是「實現」了乙個介面呢?就看這種型別是不是實現了介面中定義的所有方法。

1. 介面的定義和使用。

比如複製** **如下:

type i inte***ce

這段話就定義了乙個介面,它包含兩個函式get和put

inhic好了,我的乙個介面實現了這個介面:

複製** **如下:

type s struct

func (this *s) get int

func (this *s)put(v int)

這個程式設計客棧結構s就是實現了介面i

2. 空介面

對於空介面inte***ce{} 其實和泛型的概念很像。任何型別都實現了空介面。

下面舉個例子:

乙個函式實現這樣的功能:

以任何物件作為引數,如果這個物件是實現了介面i,那麼就呼叫介面i的get方法

很多語言都是這樣的邏輯:

複製** **如下:

function g(obj)

}go中是這樣實現的:

複製** **如下:

func g(any inte***ce{}) int

這裡的any.(i)是不是很語義化?「任何實現了i介面的物件」

3. go中inte***ce的寫法:

下面看幾個inte***ce的例子:

複製** **如下:

func somefunction(w inte***ce)

這個例子中,直接將inte***ce定義在引數中,很特別…

複製** **如下:

func weirdfunc( i int ) inte***ce{}

return i;

}這裡例子中,由於有可能返回string,也有可能返回int,因此將返回值設定成為inte***ce,這個在go的package包中會大量見到。

本文標題: go語言介面定義與用法示例

本文位址: /jiaoben/golang/158233.html

Go 語言變數的定義 用法 示例

go語言的變數定義有一下這幾種方式 1 var 變數名 型別 示例 var a int 10,var a int 在變數定義完之後沒有賦值時會賦預設值,比如 var a int,輸出之後a的值為0。2 var 變數名 初始值 示例 var a 10 會根據賦值的型別自動推斷a的型別。3 變數 初始值...

Go語言介面用法例項

介面型別是由一組方法定義的集合。介面型別的值可以存放實現這些方法的任何值。複製 如下 package main import fmt 程式設計客棧nb math type abser inte ce func main a f a myfloat implements abser a v a ver...

GO介面定義與實現

如果你看它像只鴨子,那麼它就是乙隻鴨子,這就是duck typeing的概念。如果你是個小朋友你可能會把它當作小黃鴨,如果你是個吃貨可能會把它當作是別的什麼東西。這個概念是有點抽像的。先上段 看看go的介面定義與實現 greenduck.go package duck type greenduck ...