【问题标题】:How should I use imports for subfolders with go modules?我应该如何将导入用于带有 go 模块的子文件夹?
【发布时间】:2020-11-25 01:38:24
【问题描述】:

当涉及到子文件夹时,我不确定导入。我的 gopath 是“/home/username/go”,我的项目位于“/home/codeboxx/go/src/project”。 . 假设我的项目树如下所示:

- project
  - foldera
    - foldera.go
  - folderb
    - folderb.go
  - go.mod
  - go.sum
  - main.go

如果在我的 main.go 中我导入了类似“github.com/gorilla/mux”的内容,但在我的 foldera.go 中我也需要这个导入,我该怎么做?显然我可以在我的文件夹a.go中再次导入“github.com/gorilla/mux”,但是如果我的模块名称像“potato”,我不能只做类似“potato/github.com/gorilla/mux”的事情“在我的文件夹a.go 中?我想知道,因为我希望所有内容都使用相同的版本保持最新。我应该在每个子文件夹中为这些初始化一个 go.mod 吗?本地包我在 foldera.go 中执行“potato/somepackage”之类的操作没有问题。

我可能误解了一些东西,但是我一直在谷歌上看,我不明白..

感谢您的帮助!

【问题讨论】:

    标签: go go-modules


    【解决方案1】:

    无论如何,它们都将使用相同的版本,只是因为它位于不同的文件夹中并不意味着它会忽略根 go.mod

    【讨论】:

    • 所以 foldera.go 的 "github.com/gorilla/mux" 将始终与来自土豆模块的那个是最新的,即使我只是将它导入为 "github.com/gorilla/ mux”,与“potato”模块无关?感谢您的快速回答!
    • 正确,除非您说“与土豆模块无关” - 文件夹内带有 go.mod 的所有内容,包括子文件夹,都是该模块的一部分(除非它们有自己的 go.mod可能)
    • 哦,好吧。我认为因为我们没有像本地包一样提及模块名称,所以它并没有真正相关。我还认为,由于我在子文件夹的模块中拥有它,我什至不需要导入“github ...”。哦,好的,非常感谢!
    猜你喜欢
    • 2022-12-10
    • 2019-11-24
    • 2017-06-07
    • 2014-04-20
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多