本篇文章給大家介紹有關Golang的相關知識,聊聊開源Go中的一個循環(huán)依賴檢測工具(go-cyclic) ,希望對大家有所幫助。
go-cyclic 循環(huán)依賴解決工具
問題描述
作為一個 Go 開發(fā)者,經(jīng)常會在大型項目中遇到包的循環(huán)依賴問題。
如果 Golang 出現(xiàn)循環(huán)依賴,那么會在編譯時拋出異常。
什么時候會出現(xiàn)循環(huán)依賴?
如果有兩個包:package a 和 package b。當在包a依賴包b,包b依賴包a時,就會產(chǎn)生循環(huán)依賴。真實情況可能會更復雜一些。例如,如包a依賴包b,包b依賴包c,包c又依賴包a時,形成一個環(huán)。
php入門到就業(yè)線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點擊使用
import cycle not allowed
登錄后復制
而且如果項目很大的時候,一個包下面有很多 .go 文件,只提示包與包的循環(huán)引用(如上圖),是很難定位到哪個 .go 文件和哪個 .go 文件直接進行了循環(huán)引用,難以排查。
go-cyclic 簡單用法
github地址:github.com/elza2/go-cyclic (歡迎各位大佬提 pr)
go-cyclic 可以用來檢查項目是否存在循環(huán)依賴,并且可以定位到具體的 .go 文件。幫助快速定位循環(huán)問題。
快速開始
go install github.com/elza2/go-cyclic@latest # path 路徑要設置為 go.mod 文件所在的路徑.go-cyclic gocyclic --dir .path
登錄后復制
# success output.Success. Not circular dependence.# failed output.Failed. 1 circular dependence chains were found.┌---→ app.go┆ ↓ ┆ routes.go┆ ↓ └--- handler.go
登錄后復制