我有 2 个可能相关的问题。
我有一个测试 monorepo 设置,有 2 个子目录(mod1
和mod2
)。
每个模块都有一个文件go.mod
,每个模块都有一个.go
包含基本打印代码的文件。其中mod2
有一个子目录mod2_lib
(其中包含一个.go
带有基本打印代码的简单文件),因为我读到 Go 模块基本上是它们自己的小文件GOPATH
。
我想调用Run()
一个包中的mod2/mod2_lib
函数mod1
,但我得到的只是build github.com/account_name/test/mod1: cannot find module for path github.com/account_name/test/mod2/mod2_lib
。
这是我用来解决这个问题的文件:
mod1/t.go
package main
import (
"fmt"
"github.com/account_name/test/mod2/mod2_lib"
)
func main() {
fmt.Println("mod1")
mod2_lib.Run()
}
mod2/mod2_lib/t_lib.go
package mod2_lib
import "fmt"
func Run() {
fmt.Println("RUNS")
}
第二个问题是,在这个 monorepo 中,我希望在顶级目录py
和rust
. 所以我想把我所有的 Go 包放在go/src
目录中。其他人如何将此go/src
路径导入到他们的项目中(可能仍然有"github.com/account_name/test/mod2/mod2_lib"
作为导入路径,而不是"github.com/account_name/test/go/src/mod2/mod2_lib"
)?
谁能给我一些关于这些问题的指示?我想转而使用 Golang 模块,并放弃GOPATH
.