不涉及远程仓库的Go模块?

问题描述 投票:0回答:1

我想在不涉及远程仓库的情况下让Go模块工作。

src 是一个本地目录,包含了我所有的项目,也包括用Go以外的其他语言编写的项目。为了简单起见,我只显示了与我的问题相关的两个目录。

src
 ├── client
 │   ├── go.mod
 │   └── main.go
 └── lib
     ├── go.mod
     └── lib.go

这两个目录是... go.mod 文件是通过运行命令 go mod init clientsrc/clientgo mod init libsrc/lib.

srcclientmain.go。

package main

import "lib"

func main() {
    lib.Hello()
}

srcliblib.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 go-modules
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.