## 下載
[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` 的參數

## 代碼包
代碼包是編譯和歸檔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