【问题标题】:Creating a project with Go modules使用 Go 模块创建项目
【发布时间】: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


【解决方案1】:

您的项目应该只有一个go.mod 文件,并且它应该位于项目的根目录中。您可以 cd 进入项目目录并执行 go mod init <module_name> 其中 <module_name> 在您的情况下可以是 project1

例如,一旦您初始化了模块,您的项目应该如下所示:

/project1/helpers/helpers.go
/project1/main.go
/project1/go.mod

go.mod

module project1

go 1.16

main.go

package main

import "project1/helpers"

func main() { helpers.DoHelperMethod() }

helpers/helpers.go

package helpers

func DoHelperMethod() {
    // ...
}

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多