更新:根據實際開發理解介面
給乙個服務端的場景吧:有不同的伺服器組成的後端,登入註冊服,gateway服,處理邏輯的伺服器,他們都需要在鏈結前啟動,向乙個統一的伺服器發現的伺服器註冊自己(以便宕機改變訊息的**路徑),那麼他們的run()方法可以定義在乙個介面中,實現用同乙份啟動**,實現不同服的初始化。
這是很多資料對介面的定義,對於介面而言,很難通過概念對它有個清晰的了解,那就通過實踐來理解一下,對於乙個專案,init函式肯定並不陌生,專案中需要初始化的有很多,以下**用陣列,切片,map表來代替要初始化的資源↓↓↓↓↓
type _array struct{}
type _slice struct{}
type _map struct{}
func (a _array) init()
func (s _slice) init()
func (m _map) init()
對於沒有介面的面向過程而言,在需要初始化的時候,就需要顯示呼叫↓↓↓↓↓func main()
這樣的寫法顯然有些繁瑣,當程式不關心型別是什麼(不關心是誰呼叫了init)只關心init()這個行為的時候,介面就可以完美的解決↓↓↓↓↓package main //完整** 複製可執行看效果
import (
"fmt"
"strings"
)type _array struct{}
type _slice struct{}
type _map struct{}
func (a _array) init() // _array結構體實現了init,即可理解為_array實現了initer介面
func (s _slice) init() //_slice實現了initer介面
func (m _map) init() //_map實現了initer介面
type initer inte***ce
var m = map[string]initer
func main()
}}
當結構體實現介面的時候,就可以讓介面型別獲取結構體的例項,通過統一的init()實現對不同的型別init呼叫,有點類似於c++的多型(讓基類指標指向不同的派生類物件,統一呼叫函式後從不同的虛函式表中找到對應的方法 go語言 介面的思考(一)
在 學習go語言 中,有乙個例子,說得是怎樣做乙個通用的介面來實現給數字,字串來排序。第一種思路 1.定義乙個函式,可以接收任意型別做為入參,然後 在函式內,根據入參來判斷是那乙個型別 func sort i inte ce 在呼叫時,sort int 我們傳入了乙個陣列,很不幸,go不能 隱式 轉...
通俗理解JAVA介面
說得很抽象?沒關係,我們來看一下通俗點的解釋。現在把領導交代的任務看作是乙個介面 public inte ce task介面是task是領導留下的任務 裡面要求做的一樣工作是wok 領導不會自己去完成該任務,只會告訴你,你的目標是什麼,怎麼實現需要看個人喜好。領導的任務可以被不同的相關物件接受,譬如...
介面的理解
例如乙個entitymodel類擁有很多屬性資訊 name,age,height,weight。現在如果想使用其中的height和weight,可以定義乙個介面ibodyinfo package com.wjy.understandinte ce public inte ce ibodyinfo 然...