我试图让 Go 模块在不涉及远程存储库的情况下工作。src是一个本地目录,其中包含我所有的项目,还有用 Go 以外的其他语言编写的项目。为简单起见,我只显示了与我的问题相关的两个目录:src ├── client │ ├── go.mod │ └── main.go └── lib ├── go.mod └── lib.go这些go.mod文件是通过运行命令go mod init clientinsrc/client和go mod init libin来创建的src/lib。src/client/main.go:package mainimport "lib"func main() { lib.Hello()}src/lib/lib.go:package libimport "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 代码?
1 回答
偶然的你
TA贡献1841条经验 获得超3个赞
您可以使用replace指令。
项目结构:
root
├── client
│ ├── go.mod
│ └── main.go
└── lib
├── go.mod
└── lib.go
go.modroot/lib模块:
module github.com/owner/root/lib
go 1.13
go.modroot/client模块:
module github.com/owner/root/client
go 1.13
require github.com/owner/root/lib v0.0.0
replace github.com/owner/root/lib => ../lib
这太可怕了,如果没有 VCS,你真的必须为每次导入都这样做吗?
不, replace指令替换模块的特定版本的内容,并包括属于替代模块的包。
root
├── client
│ ├── go.mod
│ └── main.go
└── lib
├── utils
│ └── util.go
├── libs
│ └── lib.go
└── go.mod
package main
import (
"github.com/owner/root/lib/utils"
"github.com/owner/root/lib/libs"
)
func main() {
//...
}
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消