在去
的官网文档How to Write Go Code中,已经介绍了去
的项目目录一般包含以下几个:
- SRC包含项目的源代码文件;
- PKG有后编译生成的包/库文件;
- Bin包含编译后生成的可执行文件。
可以通过下面的例子来说明工程目录的组织管理。(Windows 7 64位,go version go1.3.3 windows/amd64) scrum
1。创建库文件
创建一个库文件a.go
并保存在SCR目录的一个子目录下面。
这时候目录结构如下: 软件项目管理
<;dirtest >;|——<;SRC >;|——<;mufunc >;| --a.go
2。创建主
关于main包的位置,可以参照参考资料2,个人建议放在可控硅/主
下面,毕竟官方推荐包名和文件存放的文件夹名称最好相同(虽然包名和文件夹名可以不相同,也就是说一个文件夹下可以包含多个包的去。
文件)。
这时候目录结构如下: 敏捷开发流程
<;dirtest >;|——<;SRC >;|——<;mufunc >;| --a.go |——<;主要>;| --b.go。
三.使用去建立
如果这时候使用去建造
,你会发现下面的输出:
E:/ dirtest >;建立SRC /主/ B. SRC /主/ B.:3:8:无法找到包myfunc,和被称为“太极”。
从输出中我们可以看到,去
先是从goroot美元
中查找包MyFunc
,如果没找到就从gopath美元
中查找,结果都没有找到,我们可以使用去膜
输出去
的环境变量设置: 研发项目管理
E:/ dirtest >;去env设置gOArch = AMD64套扇=集gochar = 6套goexe = .exe设置gohostarch = AMD64集gohostos =窗口设置好= Windows设置gopath = D / GoLang集gorace = GOROOT = C:/程序文件/去设置gotooldir = C:/程序文件/去/设备/工具/ windows_amd64集CC = GCC组gogccflags = 64 - mthreads - fmessage长度= 0 = G +集集cxx cgo_enabled = 1
显然E:/ dirtest
这个目录没有加到gopath美元
中,在环境变量中添加该目录:
保存后,重新执行(可能需要重新打开控制台,让环境变量生效)去建造
,就在当前目录生成了一个可执行文件就是
。
E:/ dirtest / SRC /主>;去env设置gOArch = AMD64套扇=集gochar = 6套goexe = .exe设置gohostarch = AMD64集gohostos =窗口设置好= Windows设置gopath = D / E / dirtest Golang集gorace = GOROOT = C:/程序;文件走集gotooldir = C:/程序文件/去/设备/工具/ windows_amd64集CC = GCC组gogccflags = 64 - mthreads - fmessage长度= 0 = G +集集cxx cgo_enabled = 1 E:/ dirtest >;建立SRC /主/ B. E:/ dirtest & gt;dirE: / dirtest dir >;<目录2015 / 01 / 13 23:11;23:11。2015 / 01 / 13 & lt;目录>;2015 / 01 / 13 / 01 / 13就是2015 22:52 23:11 1958912。<;目录>;SRC E:/ dirtest >;就是a.go包装mufunc。B.主要是包。
虽然成功运行,但是没有按照期待的那样生成在箱子目录下面。为了达到这样的效果,你需要去安装
。注意去安装
是针对package,而不是针对单个去。
文件。
但是如果是当前状态执行去安装
,虽然可以成功,但你会发现,并没有在项目根目录E:/ dirtest
中创建斌/ main.exe
,反而是在D:/ GoLang
中创建了。
如果对main包执行去安装
呢?
E:/ dirtest / SRC /主>;走去安装:安装没有安装位置为:/ dirtest / SRC /主营:隐藏
可以看到,输出提示当前目录被隐藏。显然这个顺序是对应gopath美元
的设置的,把gopath美元
中的路径顺序改一下:
然后在执行去安装myfunc
,发现成功地在一包目录下面生成了Myfunc的。
。同样执行去安装主
,也成功的在箱子目录下生成了main.exe
。此时的目录结构如下:
<;dirtest >;|——<;SRC >;|——<;mufunc >;| --a.go |——<;主要| --b.go >;|——<;PKG >;|——<;windows_amd64 >;|——myfunc,|——lt;仓>;| --main.exe
现在就算是成功完成了一个示例“项目”吧…
4。常见的错误
除了上面的步骤中出现的错误,其实工程目录管理稍有不慎,就会出现其他问题,例如:
1。文件夹包含不同包的多个源文件。要把a.go和B.的MyFunc目录下什么?
这时候的目录结构如下:
<;dirtest >;|——<;SRC >;|——<;mufunc >;| --a.go | --b.go
那么执行去安装
和去建造
,甚至走跑
都会是相同的错误:
E:/ dirtest / SRC / MyFunc >;去安装和# 39;t负荷包装:包装MyFunc:发现包(a.go myfunc)和主体(B.)E:/ dirtest / SRC / MyFunc E:/ dirtest / SRC / MyFunc >;去建立能与# 39;T包装:包装:负载myfunc发现包myfunc(a.go)和主体(B.)E:/ dirtest / SRC / MyFunc E:/ dirtest / SRC / MyFunc & gt去B. B.:3:8:发现;包myfunc(a.go和主(B.)E:/ dirtest / SRC / myfunc)
从参考资料3中可以看到,每个子目录中只有一个包,否则编译将是错误的。,所以一个子目录下面不能包含多个不同包的源文件。
可2。一个项目包含多个主()?
简单测试下,创建一个您
,并使用MyFunc
包(没有导入其他包的情况类似):
执行相应的命令,结果如下:
E:/ dirtest / SRC /主>;去#建立主重新声明。/您:4:这一块以前的宣言。/ B.:5电子邮件:/ dirtest / SRC /主>;去建立您#成功,当前目录下生成c.exe E:/ dirtest / SRC /主>;去#安装主重新声明。/您:4:这一块以前的宣言。/ B.:5电子邮件:/ dirtest / SRC /主& gt去安装您去安装:;没有安装位置。去上市的命令文件(线扇不集E:/ dirtest / SRC /主& gt去您);这是一a.go您是包mufunc。您还包的主要。
显然只能是走跑
和建立您
可行。如果把您
移到单独的目录下面呢:
E:/ dirtest / SRC /海外华人互助会>;目录:/ / /海外华人互助会dirtest src目录& gt;& lt目录2015 / 01 / 14 11:27;11:27。2015 / 01 / 14 & lt;目录>;2015 / 01 / 14。147您去建立24 E:/ dirtest / SRC /海外华人互助会>;E:/ dirtest / SRC /海外华人互助会>;去安装
均可以执行成功。去安装
在箱子目录下面生成了对应的exe
文件。看来还是目录管理的问题。
三.go安装:命令行列出的go文件没有安装位置
从上面的示例输出中就能看到,使用去安装
针对单个文件时,就会出现这个错误。默认情况下如果设置了goroot美元
和gopath美元
,就会依次寻找goroot美元/桶
和gopath美元/桶
。那么我们如果自定义设置了扇= E / dirtest美元/桶
之后会怎样?
E:/ dirtest / SRC /海外华人互助会>;去env设置gOArch = AMD64套扇= E / dirtest /本集gochar = 6集goexe = .exe设置gohostarch = AMD64集gohostos =窗口设置好= Windows设置gopath = E / dirtest D:/ GoLang集gorace = GOROOT = C:/程序;文件/去设置gotooldir = C:/程序文件/去/设备/工具/ windows_amd64集CC = GCC组gogccflags = 64 - mthreads - fmessage长度= 0 = G +集集cxx cgo_enabled = 1 E:/ dirtest / SRC /海外华人互助会& gt去安装您;#成功生成下E:/ dirtest /斌c.exe
虽然成功了,但是去安装
应该是作用于包级别,而非单个文件。
4之间的区别。去建设,去安装和运行
详细的可以查看参考资料4,这里简单说一下:
- 编译编译一个包,如果它是一个主包,可执行文件是在当前目录中生成的,而其他包不生成一个文件;
- 去安装编译包,和复制的结果是gopath美元/桶对应的目录下,gopath美元/包装等。
- 去gofiles…编译列出的文件并生成可执行文件并执行。通知只能用于主包,否则运行:不能运行非主包将是错误的。
此外,走跑
是不需要设置gopath美元
的,但去建造
和去安装
必须设置。走跑
常用来测试一些功能,这些代码一般不包含在最终的项目中。
5。总结
- 一定要管理好目录。
- 许多项目最好在1万亿美元以下,也就是说
- 使用尽可能多的安装,这样可以规范项目的总体结构。
6。参考资料
- Golang项目目录结构组织
- 把主要包裹放在哪里的问题
- 两个或三个关于Golang中包(包)
- 运行多文件主包
文章从互联网整理而来,旨在传播scrum、软件项目管理、研发项目管理、敏捷开发管理工具的知识与应用,帮助软件开发企业真正了解研发项目管理的价值和意义,如果本文侵犯了您的权益或者您需要具体了解更多国内做研发项目管理系统的公司翼发云敏捷项目管理系统的相关信息,欢迎和我们联络:
【网址】www.effapp.com