在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 ...