假設(shè)我決定按如下方式組織所有個(gè)人開(kāi)發(fā)的包:$GOPATH/ bin/ pkg/ src/ somepkg1 somepkg2 ... somepkgN此外,假設(shè)它們之間有大量代碼重用,因此我決定將整個(gè) $GOPATH 工作區(qū)保留在同一個(gè) Git 存儲(chǔ)庫(kù)下(每個(gè)包可以是一個(gè)子模塊),而不是更傳統(tǒng)的場(chǎng)景,其中子包不那么連貫(僅因?yàn)間o get從同一工作區(qū)使用而共存):$GOPATH/ bin/ pkg/ src/github.com/<me>/ somepkg1 somepkg2 ... somepkgN我可以看到,使用前一種方法(不在github.com/<me>/ 包路徑中使用),go get將無(wú)法獲取包,因?yàn)樗鼈儧](méi)有“聲明”自己可以在線使用。但是,可以通過(guò)使用 git 子模塊輕松解決這個(gè)問(wèn)題,因此首先會(huì)獲取所有包(請(qǐng)注意,這是一個(gè)嚴(yán)格控制的生態(tài)系統(tǒng),因此不會(huì)有名稱沖突)。go get不使用包的完整路徑是否還有其他限制(除此之外)?(我最關(guān)心的是某些代碼重構(gòu)/分析工具所產(chǎn)生的限制,這些工具利用允許在線查找包的repository path as base path 約定go get。)
1 回答

拉莫斯之舞
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
對(duì)于 Go 編譯器和 go 工具的所有元素,除了go get
包導(dǎo)入路徑是包含導(dǎo)入路徑的幾乎不透明的字符串。您可以隨意布置代碼(編譯器本身很樂(lè)意將不同文件夾中的文件編譯到一個(gè)包中)。如果您不需要或希望您的代碼go get
能夠使用,則無(wú)需使用 repo 路徑。golang.org/x/tools 中的分析和重構(gòu)工具在不透明的導(dǎo)入路徑上工作(據(jù)我所知)并且不訪問(wèn)網(wǎng)絡(luò)。
- 1 回答
- 0 關(guān)注
- 141 瀏覽
添加回答
舉報(bào)
0/150
提交
取消