導航:首頁 > APP軟體 > golang16app

golang16app

發布時間:2023-07-23 01:10:01

⑴ golang反射框架Fx

Fx是一個golang版本的依賴注入框架,它使得golang通過可重用、可組合的模塊化來構建golang應用程序變得非常容易,可直接在項目中添加以下內容即可體驗Fx效果。

Fx是通過使用依賴注入的方式替換了全局通過手動方式來連接不同函數調用的復雜度,也不同於其他的依賴注入方式,Fx能夠像普通golang函數去使用,而不需要通過使用struct標簽或內嵌特定類型。這樣使得Fx能夠在很多go的包中很好的使用。
接下來會提供一些Fx的簡單demo,並說明其中的一些定義。

1、一般步驟

大致的使用步驟就如下。下面會給出一些完整的demo

2、簡單demo
將io.reader與具體實現類關聯起來

輸出:

3、使用struct參數
前面的使用方式一旦需要進行注入的類型過多,可以通過struct參數方式來解決

輸出

如果通過Provide提供構造函數是生成相同類型會有什麼問題?換句話也就是相同類型擁有多個值呢?
下面兩種方式就是來解決這樣的問題。
4、使用struct參數+Name標簽
在Fx未使用Name或Group標簽時不允許存在多個相同類型的構造函數,一旦存在會觸發panic。

輸出

上面通過Name標簽即可完成在Fx容器注入相同類型
5、使用struct參數+Group標簽
使用group標簽同樣也能完成上面的功能

輸出

基本上Fx簡單應用在上面的例子也做了簡單講解

1、Annotated(位於annotated.go文件) 主要用於採用annotated的方式,提供Provide注入類型

源碼中Name和Group兩個欄位與前面提到的Name標簽和Group標簽是一樣的,只能選其一使用
2、App(位於app.go文件) 提供注入對象具體的容器、LiftCycle、容器的啟動及停止、類型變數及實現類注入和兩者映射等操作

至於Provide和Populate的源碼相對比較簡單易懂在這里不在描述
具體源碼
3、Extract(位於extract.go文件)
主要用於在application啟動初始化過程通過依賴注入的方式將容器中的變數值來填充給定的struct,其中target必須是指向struct的指針,並且只能填充可導出的欄位(golang只能通過反射修改可導出並且可定址的欄位),Extract將被Populate代替。 具體源碼
4、其他
諸如Populate是用來替換Extract的,而LiftCycle和inout.go涉及內容比較多後續會單獨提供專屬文件說明。

在Fx中提供的構造函數都是惰性調用,可以通過invocations在application啟動來完成一些必要的初始化工作:fx.Invoke(function); 通過也可以按需自定義實現LiftCycle的Hook對應的OnStart和OnStop用來完成手動啟動容器和關閉,來滿足一些自己實際的業務需求。

Fx框架源碼解析
主要包括app.go、lifecycle.go、annotated.go、populate.go、inout.go、shutdown.go、extract.go(可以忽略,了解populate.go)以及輔助的internal中的fxlog、fxreflect、lifecycle

閱讀全文

與golang16app相關的資料

熱點內容
qq女生頭像正面長發 瀏覽:154
trrd資料庫是什麼 瀏覽:630
電腦上的文件在哪裡弄 瀏覽:430
導信息到app為什麼要u盤 瀏覽:488
js限制輸入字數 瀏覽:776
protel99se詳細教程 瀏覽:631
數據鏈路層按什麼傳輸 瀏覽:235
網路借貸存在哪些主要模式 瀏覽:205
鄭州孩子去哪裡學編程 瀏覽:477
鄭州網路技術有限公司怎麼樣 瀏覽:331
瀏覽器清理工具 瀏覽:723
網路適配器電源管理 瀏覽:261
c盤系統文件損壞win10 瀏覽:364
速達h5賬號密碼 瀏覽:345
哪個網站有微博數據 瀏覽:47
易觀大數據官網怎麼用 瀏覽:347
uibot怎麼設置編程語言 瀏覽:610
tt2文件可以刪除嗎 瀏覽:254
手機酷狗app怎麼關閉開機啟動 瀏覽:248
微信一元購平台 瀏覽:482

友情鏈接