工作区和GOPATH和命令源码文件
1. go目录
- GOROOT:Go 语言安装根目录的路径,也就是 GO 语言的安装路径。
- GOPATH:若干工作区目录的路径。是我们自己定义的工作空间。
- GOBIN:GO 程序生成的可执行文件(executable file)的路径。
问题:设置GOOPATH的意义何在?
GOPATH 是 Go 语言的工作目录,它的值是一个目录的路径,也可以是多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace)。我们需要利于这些工作区,去放置 Go 语言的源码文件(source file),以及安装(install)后的归档文件(archive file,也就是以“.a”为扩展名的文件)和可执行文件(executable file)。
Go语言源码的组织方式:使用import包含。在工作区中,一个代码包的导入路径实际上就是从src子目录,到该包的实际储存位置的相对路径。
pkg子目录:安装后产生的归档文件(以 .a 为扩展名的文件)
bin子目录:可执行文件的目录
2. go build
在执行go build 命令的时候,默认不会编译目标代码包所依赖的那些代码包。当然,如果被依赖的代码包的归档文件不存在,或者源码文件有了变化,那它还是会被编译
- -a:如果要编译被依赖的代码包,可以加上 -a ,那么会编译所有被依赖的代码包
- -i:不但要编译依赖的代码包,还要安装他们的归档文件,那么可以加上 -i
- -x:可以看到go build 具体执行了那些操作
- -n:只查看具体操作而不执行他们
- -v:可以看到编译的代码包的名称
3. go get
go get 命令会自动从一些主流公用代码仓库下载目标代码,并把他们安装到环境变量GOPATH包含的第一个工作区的相应目录中。如果存在环境变量GOBIN,那么仅包含命令源码文件的代码会被安装到GOBIN 指向的那个目录
-u:下载并安装代码包,不论工作区是否存在他们
-d:只下载代码包,不安装代码包
-fix:在下载代码包后先运行一个用于根据当前go语言版本修正代码的工作,然后再安装代码包
-t:同时下载测试所需的代码包
-insecure:允许通过非安全的网络协议下载和安装代码包,比如HTTP
4. 命令源码文件
如果一个源码文件声明属于main包,并且包含一个无参数声明且无结果声明的main函数,那么它就是命令源码文件
5. 库源码文件
库源码文件是不能直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用