wire 是乙個輕巧的 golang 依賴注入工具。它由 go cloud 團隊開發,通過自動生成**的方式在編譯期完成依賴注入。
wire使用小例子原始碼結構說明
├─demo1 基本用法
├─demo2 介面繫結
├─demo3 結構體值注入
└─demo4 對錯誤的處理
安裝wire命令
go get github.com/google/wire/cmd/wire
這個只需要安裝一次就可以了,沒必要為每個專案都安裝一次。
provider
和injector
是wire
的兩個核心概念。
provider
是普通的go函式,用它來產生指定物件的。因而這類函式必須是有返回值的。
injector
是組織provider
函式按依賴順序(不是引數傳入順序)生成物件的。此函式的最終目標是生成指定物件,因而必須要有返回值。但它的返回值是在**生成時確定,編寫injector
函式時返回值可以任意指定。(參考各demo下的wire.go
檔案)
wire的使用大體上可以分為以下幾步。
例:
// newmessage 建立打招呼內容
func
newmessage
() message
此函式初始化了乙個message
結構體。這個函式的結果會作為下個函式的輸入。如果初始化函式與的輸入與輸出與其他初始化函式都沒關係,那麼wire**生成失敗。
此類函式被稱為provider
。
例:
// initgreeteevent1 使用 wire 生成初始化**
func
initgreeteevent1
() event
// 這裡的返回值不重要。
}
此函式是組織一系列相關初始化函式的,並傳入wire.build
函式內進行**生成。
這種函式被稱為injector
。
這裡有幾點需要注意:
injector
函式需要寫在wire.go
檔案內。雖然檔名並非強制使用這個,但wire工具生成的檔名固定為wire_gen.go
,不想每次都改檔名就用這個吧。
wire.go
檔案必須加入//+build wireinject
注釋,且它與package ***
語句之間至少有乙個空行。
這裡倒沒什麼好說的,命令列到指定目錄下執行wire
命令就可以了。
官網上的例子都是在main
包下,別太死板,這個命令是可以到處執行的。
具體功能的使用可以參考各案例demo。
golang測試框架 GoConvey使用總結
一下是搭建好了環境以後,使用的過程和開發的時候 遇到的一些坑。安裝golang測試框架 go get github.com smartystreets goconvey出來的cmd命令頁面不要關閉,否則會中斷測試。注意修改埠。預設是8080埠。可能會與開發的埠產生衝突。測試用例必須帶 test字尾,...
go依賴注入wire的使用
僅作跟人備份,瀏覽請看原文 專案規模小的情況下,是否有依賴注入框架問題不大,但是當專案變大之後,有乙個合適的依賴注入框架是十分必要的。通過調研,了解到的golang中常用的依賴注入框架主要有 inject dig等等。但是今天要介紹的是wire,乙個編譯期實現依賴注入的框架。步驟如下 首先新增依賴 ...
Golang 入門 Gin框架安裝及使用
1 安裝govendor 包管理工具 go get github.com kardianos govendor2 安裝一些輔助的類庫 go get u v github.com ramya rao a go outline3 接下來安裝go outline和goreturns。4 以上安裝好go的最...