亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在本地使用帶有 go mod 的子包

在本地使用帶有 go mod 的子包

Go
慕標5832272 2023-05-08 17:49:58
我的文件系統上有一個$GOPATH名為bitbucket.org/me/awesome.~/awesome> tree.├── main.go├── go.mod├── go.sum├── subpackageA│   └── main.go我的go.mod樣子:module bitbucket.org/me/awesomerequire (       ... # lots of external dependencies)replace bitbucket.org/me/awesome => ./在main.go我的頂級目錄中,我調用了一個子包,如下所示:import "bitbucket.org/me/awesome/subpackageA"這一切看起來都很正常。go get作品。但是,當我將整個存儲庫克隆到其他地方(比如在 Docker 映像中)并go get首次運行時,我會收到如下錯誤:package bitbucket.org/me/awesome/subpackageA: https://api.bitbucket.org/2.0/repositories/me/awesome?fields=scm: 403 Forbidden,這意味著它沒有使用包的本地文件系統版本,即使我告訴它使用文件中的replace指令go.mod。我究竟做錯了什么?我如何確保子包是從文件系統中使用的,而不是試圖從互聯網上獲取的?
查看完整描述

2 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

Go 沒有(真正的)“子包”概念。所有包裹基本上都是平等對待的。這意味著 areplace bitbucket.org/me/awesome不會影響包bitbucket.org/me/awesome/subpackageA,因為它們是兩個獨立的、不相關的包。文件夾布局不會引入 subpackageA 與 awsome 的關系,反之亦然 *)。

所以你需要為 subpackageA 添加一個單獨的替換指令

replace bitbucket.org/me/awesome/subpackageA => ./subpackageA

*) 挑剔絕對正確性:文件夾布局確實影響命名文件夾internal(不能從其他項目導入),命名文件夾vendor(可能包含銷售包)和搜索go.mod文件停止在 repo 根目錄。


查看完整回答
反對 回復 2023-05-08
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

對于另一種方法,您可以go.mod這樣:

module?awesome

然后像這樣調用子包:

import?"awesome/subpackageA"


查看完整回答
反對 回復 2023-05-08
  • 2 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號