为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在一个 go 模块中包含多个包吗?如何?

我可以在一个 go 模块中包含多个包吗?如何?

Go
幕布斯6054654 2022-05-18 14:06:33
我有一个名为“tatata”的 Go 模块。它只在我的机器上开发,因此它不包含模块名称中任何 URL 的任何路径。如果我的模块中只有一个main包,它可以正常工作。但是,如果我在模块中创建两个包,我会遇到一些问题。这是树:./|  |- go.mod  |-src     |- main     |   | - main.go     |     |- api         | - api.go文件内容:go.modmodule tatatago 1.13main.gopackage mainimport "fmt"import "tatata/api"func main() {  fmt.Println("Hello world")  api.Test1()}api.gopackage apiimport "fmt"func Test1() {   fmt.Println("Testing API")}当我尝试构建时,我发出go build ./src/main并收到以下错误: build tatata/src/main: cannot load tatata/api: malformed module path "tatata/api": missing dot in first path element现在,如果我尝试放置一个虚拟点,例如将模块重命名为tatata.com我会收到错误build tatata.com/src/main: cannot load tatata.com/api: cannot find module providing package tatata.com/api,因为显然我的包/模块在该 URL 中不可用。GOPATH为空,即未设置。问题:a) 什么是正确的方法,即在单个 Go 模块中使用多个包时命名模块和导入?b) 是否不可能有一个名称中没有点的 Go 模块?!c)您能否指出任何具有单个 go 模块和模块中的多个包的构建设置的工作示例?
查看完整描述

3 回答

?
MM们

TA贡献1886条经验 获得超2个赞

我可以在一个 go 模块中包含多个包吗?

是的当然。

如何?

你什么都不用做,它就可以工作。

(您的问题是:您尝试以错误的名称导入您的 api 包。模块内的导入路径为格式<modulename>/<relative-filepath-from-module-root>。)


查看完整回答
反对 回复 2022-05-18
?
潇湘沐

TA贡献1816条经验 获得超6个赞

您可以在单个模块中拥有任意数量的包,请看这里:https ://github.com/alessiosavi/GoGPUtils/

唯一的限制是每个文件夹只能有一个包。


查看完整回答
反对 回复 2022-05-18
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我发现了问题。该go.mod文件必须位于包含包的文件夹中。就我而言,它位于该文件夹的父级中。工作中。



查看完整回答
反对 回复 2022-05-18
  • 3 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信