第一讲 工作区和GOPATH
此為 《極客時間&Go語言核心36講》 個人筆記,具體課程詳見極客時間官網。
Table of Contents generated with DocToc
- 第一講 工作區和GOPATH
- 1. 環境變量配置
- 2. 配置GOPATH的意義
- 2.1 Go語言源碼的組織方式
- 2.2 源碼安裝后的結果(歸檔文件、可執行文件)
- 2.3 理解構建和安裝Go程序的過程
- 3. 補充
- 3.1 go build命令一些可選項的用途和用法
- 3.2 go get
- 3.3 其他
第一講 工作區和GOPATH
1. 環境變量配置
在這個過程需要配置3個環境變量:GOROOT、GOPATH、GOBIN。
- GOROOT:Go語言安裝根目錄的路徑,也就是Go語言的安裝路徑;
- GOPATH:若干工作區目錄的路徑,是我們自己定義的工作空間;
- GOBIN:GO程序生成的可執行文件的路徑;
2. 配置GOPATH的意義
可以把GOPATH簡單理解成Go語言的工作目錄,它的值是一個路徑,在 GOPATH指定的工作目錄下,代碼總是會保存在 $GOPATH/src 目錄下。在工程經過go build、go install 或 go get 等指令后,會將產生的二進制可執行文件放在 $GOPATH/bin 目錄下,生成的中間緩存文件會被保存在 $GOPATH/pkg 下。
環境變量 GOPATH 指向的是一個或多個工作區,每個工作區中都會有以代碼包為基本組織形式的源碼文件。
由于Go語言項目在其生命周期內的所有操作(編碼、依賴管理、構建、測試、安裝等)基本上都圍繞GOPATH和工作區進行,所以可以拓展出其他問題:
2.1 Go語言源碼的組織方式
和大多數編程語言一樣,Go語言的源碼也是以代碼包為基本單位的。每個代碼包都會有導入路徑,在使用程序實體之前都必須導入其所在的代碼包,例如:
import "github.com/labstack/echo"在工作區中,一個代碼包的導入路徑實際上就是從src子目錄,到該包的實際存儲位置的相對路徑。一般情況下,Go語言的源碼文件都需要被存放在環境變量GOPATH包含的某個工作區(目錄)中的src目錄下的某個代碼包(目錄)中。
2.2 源碼安裝后的結果(歸檔文件、可執行文件)
源碼文件通常會被放在某個工作區的src子目錄下,那么在安裝后如果產生了歸檔文件(xxx.a,程序編譯后生成的靜態庫文件),就會放進該工作區的pkg子目錄;如果產生了可執行文件,就會放進該工作區的bin子目錄下。
歸檔文件的相對目錄與pkg目錄之間還有一集目錄,叫做平臺相關目錄,一般是由構建(build)的目標操作系統、下劃線和木匾計算架構的代號組成。
2.3 理解構建和安裝Go程序的過程
構建使用命令go build,安裝使用命令go install,構建和安裝代碼包的時候都會執行編譯、打包等操作。
| 構建 | 操作的結果文件只存在于臨時文件,這里構建的主要意義在于檢查和驗證 | 操作的結果文件會被搬運到源碼文件所在的目錄中 |
| 安裝 | 先執行構建,然后還會進行鏈接操作,并把結果文件搬運到它所在工作區的pkg目錄下的某個子目錄中 | 結果文件會被搬運到它所在工作區的bin目錄中,或者環境變量GOBIN指向的目錄中 |
3. 補充
3.1 go build命令一些可選項的用途和用法
中go build時,默認不會編譯目標代碼包所依賴的那些代碼包,除非它依賴的代碼包的歸檔文件不存在,或者(被依賴代碼包的)源碼文件有了變化,同時,還可以可以使用-a來強制編譯。另外,如果不但要編譯依賴的代碼包,還要安裝它們的歸檔文件,可以使用-i。
- -x:查看go build命令具體都執行了哪些操作;
- -n:查看操作而不執行;
- -v:查看go build命令編譯的代碼包名稱;
3.2 go get
go get會自動從一些主流代碼庫下載目標代碼,并把它們安裝到環境變量GOPATH包含的第一個工作區的相應目錄中。如果存在環境變量GOBIN,那么僅包含命令源碼文件的代碼包會被安裝到GOBIN指向的那個目錄。
- -u:下載并安裝代碼包,無論工作區是否已經存在它們;
- -d:只下載代碼包,但不安裝;
- -fix:下載代碼包后,先運行一個修正代碼的工具,然后再安裝;
- -t:下載并測試所需的代碼包;
- -insecure:允許通過非安全的網絡協議下載和安裝代碼包;(例如:http…)
3.3 其他
-
Go語言在多個工作區中查找依賴包的時候是以怎樣的順序進行的?
根據GOPATH從上到下查找。
-
如果多個工作區中存在導入路徑相同的代碼包會產生沖突嗎?
不會,代碼包上根據GOPATH從上到下查找,找到即可停止,先找到哪個就用哪個。
總結
以上是生活随笔為你收集整理的第一讲 工作区和GOPATH的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手游问道法宝怎么获得
- 下一篇: 第二讲 命令源码文件