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

使用git设置正确的Golang目录结构,以便在自定义包上使用go build,git,go,package,file-structure,gopath,Git,Go,Package,File Structure,Gopath,因此,我已经为这件事挠头好几个星期了,在阅读了几篇关于$go build如何工作及其三个神奇目录/bin,/pkg,/src的资料后,我仍然不太清楚如何使用定制包构建Golang项目,以及如何管理git回购 让我更详细地解释一下我的情况: 我正在处理一个Go项目,该项目目录与默认的../user/Go/…目录不同。对于我的所有项目,我有一个不同的目录树,其结构如下: projects | project-a | project-b | docs | media | s

因此,我已经为这件事挠头好几个星期了,在阅读了几篇关于
$go build
如何工作及其三个神奇目录
/bin
/pkg
/src
的资料后,我仍然不太清楚如何使用定制包构建Golang项目,以及如何管理git回购

让我更详细地解释一下我的情况:

我正在处理一个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
项目
|项目a
|b项目
|文件
|媒体
|scrum

|project-b从Go 1.11开始,您不需要使用$GOPATH

您可以使用
go mod init[your repo]
只需运行
go install
go build
即可下载DEP,并创建一个
go.mod
go.sum
文件来跟踪DEP


查看此

go install
是将二进制文件放在
bin
目录中,而不是
go build
。通常,您将项目放在GOPATH中,而不是相反,我会仔细浏览,因为这里的任何建议都会反映这一点。当然,您可以强制使用您想要的任何模式,正如您在这里看到的(或者查看go1.11中的go模块,它不需要GOPATH),GOPATH通常不是git存储库的一部分。更典型的情况是,如果存在
projects/go/src/my.site/project-b/.git
projects/go/src/my.site/project-b/custom-package-a/foo.go
,则
/my.site/
段是可选的。看见这也将防止回购协议与第三方代码“混为一谈”(当然,除非你想这样做,否则它将进入
项目/go/src/my.site/project-b/vendor
。请阅读如何编写go代码并坚持下去。我假设如何编写go代码将很快更新,因为它甚至没有提到
mod
$GOPATH
,这似乎即将过时,并且是一个常见的抱怨。)g围棋用户。