導航:首頁 > 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相關的資料

熱點內容
編程後的人生是什麼 瀏覽:994
還原找不到電腦備份的文件 瀏覽:727
c畫板程序 瀏覽:443
從小學編程長大考什麼專業 瀏覽:716
arcgis計算面積工具 瀏覽:805
大數據形成卡能掃出來什麼 瀏覽:155
蘋果6共享我的位置灰色 瀏覽:381
編程語言最難是哪個 瀏覽:878
蘋果5s32g的圖片 瀏覽:521
程序怎麼連接資料庫 瀏覽:906
如何快速分類pdf文件名 瀏覽:844
現在都用什麼軟體語言進行編程 瀏覽:439
lgg3各版本區別 瀏覽:491
改文件夾名字 瀏覽:251
sql備份資料庫dmp文件 瀏覽:597
導出來的數據如何快速生成表格 瀏覽:356
錄屏大師視頻文件名 瀏覽:691
劉昊然用哪些app 瀏覽:928
比較流行的編程軟體有哪些 瀏覽:397
免費兒童編程課有哪些 瀏覽:889

友情鏈接