【发布时间】:2020-06-03 02:48:15
【问题描述】:
我正在尝试让 Go 模块在不涉及远程存储库的情况下工作。
src 是一个本地目录,其中包含我所有的项目,以及用 Go 以外的其他语言编写的项目。为简单起见,我只显示了与我的问题相关的两个目录:
src
├── client
│ ├── go.mod
│ └── main.go
└── lib
├── go.mod
└── lib.go
go.mod 文件是通过在src/client 中运行命令go mod init client 和在src/lib 中运行go mod init lib 来创建的。
src/client/main.go:
package main
import "lib"
func main() {
lib.Hello()
}
src/lib/lib.go:
package lib
import "fmt"
func Hello() {
fmt.Println("Hello World")
}
我正在尝试在 main.go 中使用库 lib.go,但无论我在导入路径中放入什么,都会显示此错误:
main.go:3:8: package lib is not in GOROOT (/usr/lib/go/src/lib)
Go 版本是go1.14.3
如何从本地文件夹正确导入 Go 代码?
【问题讨论】:
-
这里有一些关于在 go.mod 中使用本地文件路径的信息:medium.com/@adiach3nko/…(在“替换导入的模块”部分)。希望对您有所帮助。
-
使用replace 指令。
-
1.你永远不应该为你的任何包使用像“lib”或“foo/bar”这样的导入部分。这种类型的导入路径应该为 stdlib 保留。 2. 你的模块名称应该类似于“whatever.you.like/some/folder” 3. go.mod 中的替换指令让你可以做任何你喜欢的事情。 4. 最好的建议是:坚持如何编写 Go 代码,不要试图变得聪明,不要试图模仿其他语言可能使用的内容。
标签: go multi-module go-modules