Gho*_*orm 4 git package go file-structure gopath
所以我一直在这个现在抓我的头几个星期,阅读关于如何几个源后$ go build作品和它的三个法宝目录/bin,/pkg,/src,它仍然不是很清楚,我如何使用自定义包和如何构建Golang项目应该管理一个 git repo。
让我更详细地说明一下我的情况:
我正在项目目录中的 Go 项目与默认.../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
Run Code Online (Sandbox Code Playgroud)
我的projects目录可以包含任何类型的项目:java、Unity3D、VisualC# 等……然后在每个项目下,它都包含一个带有源代码的存储库。
我最近能够通过添加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,但它似乎不起作用。