## 下载
[golang官网][1]
[golang国内][2]
## 解压
直接解压到相应目录
> 推荐安装目录 `/ust/local/go`
## linux下的环境变量设置
### GOROOT
该环境变量表示go语言的安装目录
~~~
export GOROOT=/usr/local/go
~~~
### GOPATH
该环境变量表示go语言工作区的集合
#### 工作目录下的目录设置
~~~
src 存放源码
在同级别目录下包名相同;在不同包中首字母大写的函数才是全局函数
package 用来导入包名(目录名),引用时使用的是实际的包名和函数名
pkg 存放归档文件 (以 .a 为后缀的文件)
bin 存放编译后的可执行文件目录
当环境变量中设置了GOBIN,该目录无意义
当GOPATH中设置了多个工作区,必须设置GOBIN,否则无法安装GO程序的可执行文件
~~~
### GOBIN
存放编译后的可执行文件目录
### 系统环境变量PATH
将go/bin 加入`PATH`
## 源码文件
### 命令源码文件
声明自己所属的main代码包,包括无参数声明和结果声明的main函数
命令源码文件是go程序的入口
### 库源码文件
不具备上面特征的源码文件
### 测试源码文件
名称以`_test.go`为后缀
其中至少有一个函数名称以Test或Benchmark为前缀,并且该函数接受一个类型为 `*testing.T` 或者`*testing.B` 的参数
![](https://gitee.com/echohiyang/markdown-images/raw/master/1QmD6l.jpg)
## 代码包
代码包是编译和归档Go程序的最基本单位
### 代码包的声明
package xxx
源码文件必须声明所属代码包
同一代码包中所有源码文件代码包的声明应该是相同的
## go run 直接运行程序
~~~
-a 强制重新编译
-n 打印编译过程中所需的命令,但不真正执行
-x 打印编译过程中所需的命令
-p n 并行的编译数量
-v 列出被编译的代码包名称
-work 显示并保留临时工作目录
~~~
## go build 编译
~~~
-a 强制重新编译
~~~
编译命令源码文件,默认只会编译归档文件不是最新的的代码包
hyper-carror/gopcp.v2
## go install
用于编译并安装代码包或源代码文件
`安装代码包`会在当前工作区的 'pkg/<平台相关目录>'下生成'归档文件'
`安装命令源码`文件会在当前工作区的'bin'目录或 $GOBIN 目录下生成'可执行文件'
## go get
~~~
-d 只下载,不执行安装
-fix 老版本向新版本修正
-u 更新本地的代码包
~~~
[1]:https://golang.org
[2]:https://golangtc.com/download