0

我的文件夹结构看起来像这样......(假设我的 git repo 名称是 demorepo)

demorepo
|--directory1
   |-- (no go.mod at this level)
   |--module1
      |--package1 --------->--------------->--------------------->----|
      |--go.mod (github.com/demorepo/directory1/module1)              |
      |--go.sum                                                       |
   |--module2                                                         |
   |--module3                                                         |
|--directory2                                                         |
  |-- (no go.mod at this level)                                       |
  |--newmodule ------<------------<------------------<----------------|

现在,我想在“newmodule”中使用“package1”中定义的函数

当我在“new_module”中点击 go get <repo_address>/directort1/module1/package1 时,它说....

github.com/<repo>@upgrade found (v0.0.0-20211215055943-92e412ad4a12), but does not contain package github.com/<repo>/directory1/module1/package1
4

2 回答 2

1

方法 :

如果你想在module1里面使用,newModule那么你应该做一个新repo的,module1把你的逻辑推进去github。请确保您应该使用适合version该库的内容。

import它作为一个library,它会工作。

另请参阅模块依赖的官方文档并检查根级别的依赖。

官方文档:https ://go.dev/blog/using-go-modules

于 2021-12-20T08:13:22.860 回答
0

有一个针对 Go 1.18的 Go Workspace File 的提议,它应该可以简化这个任务。

同时,您可以使用文件中的指令replacego.mod引用位于本地文件系统上的模块。

demorepo/directory1/module1/go.mod

module github.com/<repo>/directory1/module1

demorepo/directory2/newmodule/go.mod

module github.com/<repo>/directory2/newmodule

replace github.com/<repo>/directory1/module1 => ../../directory1/module1

现在你可以正常import github.com/<repo>/directory1/module1/package1进入newmodule了,它会引用本地的module1.

您可能不希望文件本身replace中的指令go.mod,而是制作它的副本,例如go.mod.local并在构建项目时使用它:(go build -modfile go.mod.local .也可以添加*.local.gitignore)。

于 2021-12-20T10:44:26.317 回答