1.设置GOPATH有什么意义?
环境变量 GOPATH 的值可以是一个目录的路径,也可以包含多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace)。这些工作区用于放置 Go 语言的源码文件(source file),以及安装(install)后的归档文件(archive file,也就是以“.a”为扩展名的文件)和可执行文件(executable file)。
2.Go语言的组织方式
- Go语言的源码是以代码包为基本组织单位
- 在工作区,一个代码包的导入路径就是从src子目录到该包的实际存储位置的相对路径
- Go语言源码的组织方式就是以环境变量GOPATH、工作区、src目录和代码包为主线的。一般情况下Go语言的源码文件都需要被存放在环境变量GOPATH包含的某个工作区中的src目录下的某个代码包中。
3.源码安装结果
在安装源码后如果产生了归档文件则会放置在工作区的pkg子目录,如果产生了可执行文件则会放置在工作区的bin子目录。
4.构建和安装Go程序的过程
- 构建使用命令go build,安装使用命令go install。构建和安装代码包的时候都会执行编
译、打包等操作,并且这些操作生成的任何文件都会先被保存到某个临时的目录中。 - 如果构建的是库源码文件,那么操作的结果文件只会存在于临时目录中。这里的构建的主要意义在于检查和验证;如果构建的是命令源码文件,那么操作的结果文件会被搬运到那个源码文件所在的目录中。
- 安装操作会先执行构建,然后还会进行链接操作,并且把结果文件搬运到指定目录。如果安装的是库源码文件,那么结果文件会被搬运到它所在工作区的 pkg 目录下的某个子目录中;如果安装的是命令源码文件,那么结果文件会被搬运到它所在工作区的 bin 目录中,或者环境变量GOBIN指向的目录中。
5.思考题
(1)Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的?
答:按照GOPATH中的顺序进行查找。
(2) 如果在多个工作区中都存在导入路径相同的代码包会产生冲突吗?
答:不会,它会按照GOPATH中的顺序进行查找。