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

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

Go 模塊與包

Go 模塊與包

Go
飲歌長嘯 2022-06-06 14:56:19
剛開始學習 Go Modules。我有一個關于在同一個模塊中導入本地包的問題。我正在查看的示例是這個 repo:https://github.com/Azure/azure-service-bus-go該模塊是module github.com/Azure/azure-service-bus-go. 該模塊內有一個單獨的包,atom(但它不是模塊本身)。當主包中的文件導入原子時,它們會這樣做:import "github.com/Azure/azure-service-bus-go/atom"--queue_manager.go舉個例子。我不太明白 - GO 如何知道查看本地原子包,而不是說 Github 上的那個?讓我感到困惑的是,作為被修改模塊的一部分的東西被遠程/絕對 URI 引用。是否保證如果我修改本地磁盤上的文件并構建我實際上引用的是最新版本而不是已經推送的東西?作為一個玩具練習,我嘗試使用不存在的 Github URI 創建一個模塊,實際上它確實似乎go mod tidy試圖在 Github 上查找它,即使實際上確實存在本地副本
查看完整描述

3 回答

?
MMMHUHU

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


http://img1.sycdn.imooc.com//629da52e0001c16c06570478.jpg

  • 模塊是 go 包的集合。

  • 是 .go 文件的目錄。使用包,您可以將代碼組織成可重用的單元。

  • 我們可以添加一個模塊去項目或升級模塊版本。


查看完整回答
反對 回復 2022-06-06
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

文件中的module指令go.mod聲明了該模塊中所有包的導入路徑前綴。

如果您剛剛開始學習 Go 模塊,那么 創建 Go 模塊教程可能是一個不錯的起點。


查看完整回答
反對 回復 2022-06-06
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

我有一個類似的問題。我看到的答案似乎只適用于非常簡單的目錄結構。但是在大型項目中很容易得到復雜的結構。考慮這樣的模塊結構:


quotes/

    main.go

    go.mod

    handler/

        quoteshandler/

            quoteshandler.go

    middleware/

        ...

 

為了使用包的本地版本,我在頂級 go.mod 文件中使用“replace”指令:


quotes/go.mod:

    ...

    replace "github.com/quotes-service" => ../quotes-service

但是文件quoteshandler.go里面有import語句:


import "github.com/quotes-service/quotes/middleware"

通過從 github 存儲庫下載來滿足這些導入依賴middleware項,這不是我想要的。我不知道如何簡單地解決這個問題。似乎必須將帶有替換指令的 go.mod 文件放在模塊的每個子目錄中。


查看完整回答
反對 回復 2022-06-06
  • 3 回答
  • 0 關注
  • 275 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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