【发布时间】:2022-03-26 05:02:02
【问题描述】:
我正在尝试理解 Go 模块并创建一个简单的 hello world 程序。 Go 版本:1.16.2
/project1
/project1/main.go
/project1/helpers/helpers.go
helpers.go 将包含一些实用方法,例如:
package ???
import "fmt"
func DoSomething() {
fmt.Println("Doing something in helpers.go")
}
main.go 将使用来自helpers.go 的方法,如下所示:
package main
import "??"
func main() {
helpers.DoSomething()
}
VSCode 不允许我这样做,并且在helpers 上有一个红色下划线。
我在这里缺少什么?我怎样才能做到这一点?
编辑 1:添加 go.mod 和包名:
所以我在/helpers 文件夹中运行go mod init helpers 并得出以下结论:
/project1/helpers/helpers.go
/project1/helpers/go.mod
去.mod
module helpers
go 1.16
我的main.go 现在看起来像这样:
package main
import (
"fmt"
"helpers"
)
func main() {
fmt.Println("blah")
helpers.DoHelperMethod()
}
【问题讨论】:
-
问号是怎么回事?您能否将它们更新为实际代码中的内容?你的模块有 go.mod 文件吗?如果是这样,它在哪里?你能分享它的内容吗?
-
我什么都没放??似乎有所作为,因此我认为这是问题所在,并从互联网上寻找提示:) 为了讨论,假设它们都设置为“帮助者”。我不打算上传此代码,因此 FQ GitHub.com URL 在这里没有意义。还没有 go.mod 文件。我假设我实际上需要2个?一个在
/helpers文件夹级别,一个在main.go级别,因为它们将是 2 个不同的模块? -
教程How To Write Go Code 介绍了编写问题中的程序的步骤。该问题询问了多个模块,但是具有多个包的单个模块更适合问题中的代码。
-
不,每个项目只需要一个 go.mod 文件,该文件应该在项目的根目录中,并且
helpers包中的源文件都应该以package helpers而不是 @ 开头987654341@(这甚至不是一个有效的包名)。helpers包的导入语句应如下所示import "<module_name>/helpers。 -
感谢@mkopriva,它给了我所需的突破。我的想法是我需要两个模块,但我现在看到它是模块内部的两个包。我认为从这里开始对我来说可能是一个好的开始! golang.org/doc/tutorial/getting-started
标签: go go-modules