#01 Go 語言 環境變數 


Posted by len107008 on 2020-05-22

  • 前情提要:已經安裝完 GO 語言。
  • Tips:透過命令 $ go env 可以查詢所有 GO 環境變數的設定。

1. GOROOT

 GOROOT 為存放 Golang 語言內建程式庫的路徑,使開發 Golang 程式或 import 內建程式庫時不需要額外的安裝。
※ 通常下載安裝完後電腦就已經設定好 GOROOT 了,不需要額外的手動操作。(除非下載的是壓縮版的 GO 語言安裝檔,這時候就可能需要注意一下 GOROOT 值是否正確)

2. GOPATH

 GOPATH 通常設定為存放開發程式碼(工作區)的根目錄,內含 src、bin、pkg 三個基本的資料夾。

yourGOproject/
          └─── src
          └─── bin    
          └─── pkg
  • 以上面這樣的架構來說,GOPATH 就是 yourGOproject 資料夾(工作區根目錄)。
    • 官方慣例,在 GOPATH 下的資料夾 bin 專門放置 build 出來的可執行檔案,但也可以透過指令 $go build -o [build出來的路徑和檔案名稱] [要被 build 的檔案來源路徑和名稱] 來更改編譯結果的位置。

3. GO111MODULE

  GOPATH 的缺點是:除了官方程式庫以外,所有引入的第三方套件,都必須存在於 GOPATH/src 路徑中,否則無法使用,因此,這在專案越來越大,專案裡混雜第三方套件、官方套件、自己開發的套件等等時,管理上來說非常不方便。
  為了解決這個問題,GO 1.11 版本開始推出 GO MODULE,而 GO111MODULE 就是這項功能的設定開關。

  GO111MODULE 有三個值可以設定,強制使用(on),強制不使用(off)和自動(auto)。

  注意 GO111MODULE 的行為和 GO 版本有關係,在 GO 1.13 版本下將 GO111MODULE 設置為 auto 時,其實它的行為是這樣的:

  • 當存在 go.mod 或執行命令位置處於 GOPATH 外,GO111MODULE=on
  • 當不存在 go.mod 或執行命令位置處於 GOPATH 內,GO111MODULE=off
    • 註:go.mod 是紀錄套件版本的檔案。

在 GO111MODULE 值為 on 的情況下,引入一個第三方套件看看效果:
在 GOPATH 內使用指令 go get 來下載套件,語法是 $go get [url]

下載完之後,就會發現 GOPATH/pkg 內多出了套件資料,可以引入使用了。  













Related Posts

[TensorFlow Certification Day13] Useful Tensorflow API

[TensorFlow Certification Day13] Useful Tensorflow API

學習 Git (6) - 修改 commit 紀錄 part 3:Rebase

學習 Git (6) - 修改 commit 紀錄 part 3:Rebase

安裝RabbitMQ Server

安裝RabbitMQ Server


Comments