猿问

没有远程存储库的 Go 模块?

我试图让 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 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 代码?


萧十郎
浏览 131回答 1
1回答

偶然的你

您可以使用replace指令。项目结构:root ├── client │   ├── go.mod │   └── main.go └── lib     ├── go.mod     └── lib.gogo.modroot/lib模块:module github.com/owner/root/libgo 1.13go.modroot/client模块:module github.com/owner/root/clientgo 1.13require github.com/owner/root/lib v0.0.0replace github.com/owner/root/lib => ../lib这太可怕了,如果没有 VCS,你真的必须为每次导入都这样做吗?不, replace指令替换模块的特定版本的内容,并包括属于替代模块的包。root ├── client │   ├── go.mod │   └── main.go └── lib     ├── utils     │   └── util.go     ├── libs     │   └── lib.go     └── go.modpackage mainimport (    "github.com/owner/root/lib/utils"    "github.com/owner/root/lib/libs")func main() {    //...}
随时随地看视频慕课网APP

相关分类

Go
我要回答