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

使用 git 设置正确的 Golang 目录结构以在自定义包上使用 go build

使用 git 设置正确的 Golang 目录结构以在自定义包上使用 go build

Go
慕慕森 2023-05-15 10:31:23
所以几周来我一直在摸不着头脑,在阅读了几个关于工作原理及其三个神奇目录的资源后,$ go build我/bin仍然不太清楚如何使用自定义包构建 Golang 项目以及如何应该管理一个 git repo。/pkg/src让我更详细地解释一下我的情况:我在与默认.../user/go/.... 对于我所有的项目,我有一个不同的目录树,其结构如下:projects | project-a | project-b    | docs    | media    | scrum    | project-b   <-- git repo containg Go structure       | .git       | gitignore.txt       | bin       | pkg       | src          | custom-package-a          |  | foo.go          | custom-package-b          |  | bar.go |     | main.go       | project-c我的projects目录可以包含任何类型的项目:java、Unity3D、VisualC# 等...然后在其下的每个项目中,它包含一个带有源代码的 repo。我最近能够通过添加projects/project-b/project-b到我的 GOPATH 来成功构建,因此它可以看到 src 目录。即使构建正确,典型 Go 项目的文件结构应该是这样的吗?在我的 GOPATH 中,我删除了原来的路径user/go,只使用了项目目录。当从 github 安装其他包时,它们会包含在 repo 中,因为 GOPATH 没有在其他任何地方设置,所以我的 repo 有这些不同的子模块。将外部包安装到 repo 中是明智之举,还是应该将它们放入不同的 go 目录中?我担心这可能会使回购变得混乱。我可以包括我需要知道我是否正确使用自定义包。我的意图是在我的代码库中采用面向对象的方法,并且我将每个包都视为一个类。制作自定义包以将它们视为类是一件明智的事情吗?我发现有必要避免函数和变量之间的同名冲突。示例:package-a.GetThing(), package-b.GetThing()。这两个函数产生相似(不完全)的输出,但使用不同的数据集并需要不同的实现。projects/project-b/project-b/我的控制台在我使用时处于打开状态go build并且工作正常。如果我移动main.go到 src 内部,也一样。一个问题是 Go 构建器奇怪地将编译后的二进制文件放在我调用的同一目录中go build。不应该go build将它放在bin目录中,或者我是否需要在使用命令时强制执行输出路径?我知道 GOBIN,但它似乎没有用。
查看完整描述

1 回答

?
明月笑刀无情

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

从 Go 1.11 开始,你不需要使用 $GOPATH。

您可以使用go mod init [your repo]并运行go install,或者go build将为您下载 deps,并创建一个go.mod和文件来跟踪 deps。go.sum


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

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