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

了解如何构建 Go 源代码

了解如何构建 Go 源代码

Go
杨__羊羊 2022-07-11 14:32:36
我对如何布局我的 Go 项目以及如何构建它感到困惑。我对 Go 相当陌生,并且相信在 <1.13 的时候 GOPATH 很重要。我使用的是 1.14,所以我相信我不必关心这一点,并且没有设置 GOPATH。我不(目前)在 GitHub 上托管我的代码(这是各种文章所假设的)。我读过很多东西,但这一切都让我更加困惑:https://golang.org/cmd/go/#hdr-Compile_packages_and_dependencieshttps://www.wolfe.id.au/2020/03/10/starting-a-go-project/https://talks.golang.org/2014/organizeio.slide#1我已经根据这个布置了我的项目:https ://github.com/golang-standards/project-layout 。(除了这个项目似乎使用了 Makefile。我不想写 Makefile。我相信这应该在没有 Makefile 的情况下工作。我真的不想写 Makefile。)这是结构:/src  /cmd    main.go  /internal    helper.go  go.modgo.mod 看起来像这样:module mycompany/mymodule    go 1.14service.go 看起来如下 package main // 这必须被称为 'main'import (    "mycompany/mymodule/internal/helper")func main () {    helper.greet("Jenny")}所以,如果我进入/src并运行,build cmd/service.go我会得到 cmd/service.go:4:2: package mycompany/mymodule/internal/helper is not in GOROOT (/usr/local/Cellar/go/1.14.5/libexec/src /mycompany/mymodule/internal/helper)我必须先编译helper.go吗?手动?肯定不是。go build当然应该能够构建我的整个项目,对吧?包括所有依赖项。有人可以告诉我我错过了什么吗?
查看完整描述

1 回答

?
红糖糍粑

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

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

您正在导入错误的包。要导入的包名mycompany/mymodule/internal不能是mycompany/mymodule/internal/helper.

并且要调用另一个包内的函数,它必须暴露给外部。所以你必须将函数声明greet()Greet()


查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号