GoLang的wire框架使用例子

2021-10-24 11:22:33 字數 1528 閱讀 9188

wire 是乙個輕巧的 golang 依賴注入工具。它由 go cloud 團隊開發,通過自動生成**的方式在編譯期完成依賴注入。

wire使用小例子原始碼結構說明

├─demo1 基本用法

├─demo2 介面繫結

├─demo3 結構體值注入

└─demo4 對錯誤的處理

安裝wire命令

go get github.com/google/wire/cmd/wire
這個只需要安裝一次就可以了,沒必要為每個專案都安裝一次。

providerinjectorwire的兩個核心概念。

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的最...