微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

了解如何构建Go Source

如何解决了解如何构建Go Source

我对如何布局我的Go项目然后如何构建它感到困惑。我是Go的新人,我相信在设置为 。我暂时不将代码托管在GitHub上(这是各种文章所假定的)。我已经阅读了很多东西,但是这一切让我更加困惑:

我已经根据以下项目进行了布置:https://github.com/golang-standards/project-layout。 (除了这个项目似乎使用了一个Makefile。我不想编写一个Makefile。我相信这在没有Makefile的情况下都应该可以工作。我真的不想编写一个Makefile。)

这里是结构:

/src
  /cmd
    main.go
  /internal
    helper.go
  go.mod

go.mod看起来像这样:

module mycompany/mymodule
    
go 1.14

service.go看起来如下 包main //必须称为“ main”

import (
    "mycompany/mymodule/internal/helper"
)

func main () {
    helper.greet("Jenny")
}

因此,如果我在/src中并且运行build cmd/service.go,我会得到 cmd / service.go:4:2:软件包mycompany / mymodule / internal / helper不在GOROOT中(/usr/local/Cellar/go/1.14.5/libexec/src/mycompany/mymodule/internal/helper)>

我必须先编译helper.go吗?手动吗?当然不会。 go build当然应该能够构建我的整个项目,对吗?包括所有依赖项。有人可以告诉我我在想什么吗?

解决方法

在不指定文件路径的情况下运行go build时,它将在当前目录中的所有main文件中查找.go函数。它不会构建整个项目。但这在这种情况下不会有问题。

您导入的软件包错误。要导入的软件包名称必须为mycompany/mymodule/internal而不是mycompany/mymodule/internal/helper

要在另一个包中调用函数,必须将其暴露给外部。 因此,您必须将函数greet()声明为Greet()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。