工作区和GOPATH以及最基本的go语言命令详解

2,538 阅读4分钟
1.配置环境时有三个环境变量,GOROOT、GOPATCH、GOBIN
问题1:设置GOPATH有什么意义?
答:环境变量GOPATH的值可以是一个目录的路径,也可以包含多个目录的路径,每个目录都代表Go语言的一个工作区。这些工作区用于放置Go语言的源码文件(source file),以及安装(install)后的归档文件(archive file)和可执行文件(executable file)。

1.Go语言源码的组织方式
Go语言源码是以代码包为基本组织单位的。代码包是与目录一一对应的,目录可以有子目录,代码包也可以有子包。
一个代码包中可以包含任意个以.go为扩展名的源码文件,这些源码文件都需报被申明为属于同一个代码包。代码包的名称一般会与这些源码文件所在的目录同名。
每个代码包都会有导入路径,在实际使用程序实体之前,我们必须先导入其所在的代码包。具体方式就是import该代码包的导入路径。
所以说,Go语言源码的组织方式就是以环境变量GOPATH、工作区、src目录和代码包为主线的。一般而言,GO语言的源码文件都需要被存放在环境变量GOPATH的某个工作区中的src目录下的某个代码包目录。

2.了解源码安装后的结果
工作区src子目录中的源码文件在执行 go install 后会生成一个归置文件放置于当前工作区的pkg子目录下的对应的目录中,或者直接放置到该工作区的bin子目录中。 归档文件的相对目录与pkg目录之间还有一级目录,叫做平台相关目录。平台相关目录的名称是由目标操作系统、下划线和目标计算架构代号组成的。例如:linux_amd64.

3.理解构建和安装Go程序的过程

构建使用命令go build,安装使用命令go install。构建和安装代码包的时候都会执行编译、打包等操作,并且这些操作生成的任何文件都会被保存到某个临时目录中。
构建的主要目的在于检查和验证。当构建库源码文件时操作的结果会存在于临时目录中,当构建命令源码文件时,那么操作的文件会被搬运到源文件所在目录中。
安装会先执行构建,然后进行链接操作把结果文件搬运到指定目录中,如果安装的是库源码文件,那么结果文件会被搬运到它所在工作区的pkg目录下的某个子目录中。
如果安装的是命令源码文件,那么结果文件会被搬运到它所在工作区的bin目录中,或者环境变量GOBIN指向的目录中。

4.go build命令一些可选项的用途和用法
go bulid命令默认不会编译目标代码包所依赖的那些代码包。但是如果被依赖的代码包归档文件不存在,或者源码文件有了变化,那它还是会被编译。
在执行命令的时候加上-a会强制编译它和它所依赖的代码包。加上-i不但会编译依赖的代码包还会安装它们的归档文件。
确定哪些代码包被编译的操作:
1.go build -x,这样可以看到go build具体执行力哪些操作。go build -n可以看到具体操作但不执行它们。
2.go build -v可以看到go build命令编译代码包的名称,可以与-a搭配使用。

5.go get命令
go get命令会从主流的代码仓库下载目标代码包,并安装到环境变量GOPATH的第一个工作区相应目录下(src bin pkg)规则与之前一样。
go get 有一下几个常用的标记
-u:下载安装代码包,无论工作区中是否已经存在它们
-d:只下载代码包,不安装代码包
-fix:在下载代码包后运行一个根据当前
-t:同时下载测试所需代码包
-insecure:允许通过非安全的网络协议下载和安装代码包。
有时我们会改变远程代码仓库的路径,为了不改变代码包的远程导入路径,此时我们可以自定义路径。
关于自定义代码包导入路径的完整说明: