gpt4 book ai didi

go - 引用本地的 Go 模块

转载 作者:行者123 更新时间:2023-12-01 22:27:34 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to use a module that is outside of "GOPATH" in another module?

(2 个回答)


2年前关闭。




我从本地项目(Go 模块)导入包失败。这是我正在尝试的简介:

我创建了一个 Go 模块包,如下所示:

  $ cd 
$ mkdir mymodule
$ cd mymodule
$ go mod init github.com/Company/mymodule

然后我添加了 hello.gomymodule有点功能
// mymodule/hello.go

package mymodule

func sayHello() string {
return "Hello"
}
go build那是成功的。

请注意,该模块尚未推送到 github 存储库 .在推送到 github 之前,我想使用(并且可能测试)mymodule。所以我创建了另一个包,如下所示:
  $ cd 
$ mkdir test
$ cd test
$ go mod init github.com/Company/test

然后,创建了一个新文件 test.gotest目录并在其中尝试导入 mymodule ,像这样:
// test/test.go

import (
"fmt"
"github.com/Company/mymodule"
)

func testMyModule() {
fmt.Println(mymodule.sayHello())
}


但是 go buildtest失败并出现以下错误。是什么赋予了?
cannot load github.com/Company/mymodule: cannot find module providing package github.com/Company/mymodule

最佳答案

解决 go.mod 中的依赖关系时, Go 将尝试通过从您提供的远程 URL 获取第三方模块来解析它们。

除非您将其推送到 GitHub,否则远程 URL 不存在。这是当您收到如下错误时:

cannot load github.com/Company/mymodule: cannot find module providing package github.com/Company/mymodule

本地模块有一个解决方法,您可以使用 replace您的 go.mod 中的关键字文件。
replace github.com/Company/mymodule v0.0.0 => ../mymodule

这将使 Go 知道在哪里可以找到您的本地依赖项。只要确保使用正确的模块相对路径即可。

一旦你的本地测试完成并且你已经将你的模块推送到一个存储库,那么你可以删除 replace来自您的 go.mod 的行并使用
go get -u github.com/Company/mymodule`

让模块与您当前的项目一起正常工作。

作为旁注,Go 包中的函数和变量应该以大写字母开头,以便可以从包本身外部访问。

祝你好运!

关于go - 引用本地的 Go 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59014404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com