重拾golang-go⽬录结构说明
go ⽬录结构说明
golang集多编程范式之⼤成者,使开发者能够快速的开发、测试、部署程序,⽀持全平台静态编译。go具有优秀的依赖管理,⾼效的
运⾏效率,庞⼤的第三⽅库⽀持以及在国内持续的增长势头。
作为开发者的我们也将不得不重视这门语⾔的兴起。⾸先向⼤家讲解⼀下go语⾔开发环境的⽬录结构,让我们更清楚的认识它。
⼀、goroot开发包⽬录
当我们安装好后,会在安装⽬录出现⼀个go/⽂件夹,如果是windows⽬录应在再C:/go下(默认),如果是unix/linux⼀般会在/usr/local/go下,这个⽬录是unix softw
# liunx上⽬录位置
chao@chao-PC:/usr/local/go$ pwd
/
usr/local/go
# 主要⽬录包含如下图,分别进⾏说明:
1、api⽂件夹
存放Go API检查器的辅助⽂件。其中,、、和⽂件分别罗列了不同版本的Go语⾔的全部API特征;⽂件中罗列了⼀些(在2、bin⽂件夹
存放所有由官⽅提供的Go语⾔相关⼯具的可执⾏⽂件。默认情况下,该⽬录会包含go和gofmt这两个⼯具。
3、doc⽂件夹
存放Go语⾔⼏乎全部的HTML格式的官⽅⽂档和说明,⽅便开发者在离线时查看。
4、misc⽂件夹
存放各类编辑器或IDE(集成开发环境)软件的插件,辅助它们查看和编写Go代码。有经验的软件开
发者定会在该⽂件夹中看到很多熟悉的⼯具。
查看:
chao@chao-PC:/usr/local/go/misc$ ls
android benchcmp chrome git linkcheck sortac tour
arm cgo editors ios nacl swig trace
5、pkg⽂件夹
⽤于在构建安装后,保存Go语⾔标准库的所有归档⽂件。pkg⽂件夹包含⼀个与Go安装平台相关的⼦⽬录,我们称之为“平台相关⽬
录”。例如,在针对Linux 32bit操作系统的⼆进制安装包中,平台相关⽬录的名字就是linux_386;⽽在针对Windows 64bit操作系统的
安装包中,平台相关⽬录的名字则为windows_amd64。
Go源码⽂件对应于以“.a”为结尾的归档⽂件,它们就存储在pkg⽂件夹下的平台相关⽬录中。
值得⼀提的是,pkg⽂件夹下有⼀个名叫tool的⼦⽂件夹,该⼦⽂件夹下也有⼀个平台相关⽬录,其中存放了很多可执⾏⽂件。关于这
些可执⾏⽂件的⽤途,读者可参见附属于本书的Go命令教程。
查看:
chao@chao-PC:/usr/local/go/pkg$ ls
include linux_amd64_dynlink linux_amd64_shared tool
linux_amd64 linux_amd64_race linux_amd64_testcshared_shared
6、src⽂件夹
存放所有标准库、Go语⾔⼯具,以及相关底层库(C语⾔实现)的源码。通过查看这个⽂件夹,可以了解到Go语⾔的⽅⽅⾯⾯。
查看:
chao@chao-PC:/usr/local/go/src$ ls
all.bash clean.bat errors iostest.bash os sort
all.bat expvar log path strconv
< cmd flag make.bash plugin strings
androidtest.bash cmp.bash fmt make.bat race.bash sync
archive compress go Make.dist race.bat syscall
bootstrap.bash container hash reflect testing
bufio context html math regexp text
buildall.bash crypto image mime run.bash time
builtin database index naclmake.bash run.bat unicode
bytes debug internal nacltest.bash unsafe
clean.bash encoding io net runtime vendor
7、test⽂件夹
存放测试Go语⾔⾃⾝代码的⽂件。通过阅读这些测试⽂件,可⼤致了解Go语⾔的⼀些特性和使⽤⽅法。
⼆、gopath⼯作区⽬录结构
在环境变量中除了$GOPATH这样的显式变量外,Go语⾔还有两个隐含的环境变量——GOOS和GOARCH。
GOOS代表程序构建环境的⽬标操作系统,可笼统地理解为Go语⾔安装到的那个操作系统的标识,其值可以是darwin、freebsd、
linux或windows。
GOARCH则代表程序构建环境的⽬标计算架构,可笼统地理解为Go语⾔安装到的那台计算机的计算架构的标识,其值可以是386、
amd64或arm。
⼯作区有3个⼦⽬录:src⽬录、pkg⽬录和bin⽬录。
1、src⽬录
⽤于以代码包的形式组织并保存Go源码⽂件。这⾥的代码包,与src下的⼦⽬录⼀⼀对应。例如,若⼀个源码⽂件被声明为属于代码包logging,那么它就应当被保存
Go语⾔的源码⽂件分为3类:Go库源码⽂件、Go命令源码⽂件和Go测试源码⽂件。
2、pkg⽬录
⽤于存放经由go install命令构建安装后的代码包(包含Go库源码⽂件)的“.a”归档⽂件。该⽬录与GOROOT⽬录下的pkg功能类似。区别在于,⼯作区中的pkg⽬录
3、bin⽬录
go语言安装教程与pkg⽬录类似,在通过go install命令完成安装后,保存由Go命令源码⽂件⽣成的可执⾏⽂件。在Linux操作系统下,这个可执⾏⽂件⼀般是⼀个与源码⽂件同名的⽂
注意: 这⾥有必要明确⼀下Go语⾔的命令源码⽂件和库源码⽂件的区别。所谓命令源码⽂件,就是声明为属于main代码包,并且包含⽆参数声明和结果声明的main函数的源码⽂件。
这类源码⽂件可以独⽴运⾏(使⽤go run命令),也可被go build或go install命令转换为可执⾏⽂件。⽽库源码⽂件则是指存在于某个代码包中的普通源码⽂件。
三、go编译时,⽬录查顺序
go⼯程包含依赖包管理,GOROOT,GOPATH三类⽬录来查编译需要的库。他们的顺序如下:
1. 从⼯程项⽬的root⽬录查vendor⽬录中的依赖库。
2. 从⽤户环境变量$GOPATH/src中查依赖库。
3. 从⽤户环境变量$GOROOT/src中查依赖库。
4. 未到,抛出异常,编译终⽌。
总结:
通过对golang的⽬录结构的了解和编译时查依赖库的顺序,对这门语⾔有⼀个初步的认识,接下来我们将通过go的内部命令深⼊了解⼀下它。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论