Environment

今天來建立開發環境,會分成安裝主程式與設定環境變數兩個部分。

安裝主程式

這裡的主程式是指 go 指令,它能處理編譯、直譯、建置、格式化程式碼、測試、下載依賴等多種工具的組合。

以下介紹常見的環境該如何安裝 Go。

MacOS

使用 Homebrew 可以簡單地安裝:

$ brew install go
$ go version
go version go1.9.2 darwin/amd64

未來將會使用 MacOS 當作主要練習環境。

Ubuntu Linux 16.04

使用預設安裝,但試了一下,Ubuntu 預設版本是 Go 1.6:

使用 Vagrant 建立 Ubuntu 虛擬環境測試

$ vagrant init ubuntu/xenial64
$ vagrant up
$ vagrant ssh
$ sudo apt-get install golang-go
$ go version
go version go1.6.2 linux/amd64

如果需要最新版,可以加入 Golang 的 PPA:

注意安裝套件與 go 指令的位置

$ sudo add-apt-repository ppa:gophers/archive
$ sudo apt update
$ sudo apt-get install golang-1.9-go
$ /usr/lib/go-1.9/bin/go version
go version go1.9.2 linux/amd64

如安裝上遇到問題,也可參考 wiki

Windows

可到官方網站下載 MSI 檔安裝,接著重新打開命令提示字元後,就可以使用 go 指令了:

C:\Users\User>go version
go version go1.9.2 windows/386

環境變數設定

可下 go env 取得環境變數:

$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/miles.chou/go"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.9.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.9.2/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/50/nzgqq0d96px715qlh926y2jcm2qxyy/T/go-build204908691=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"

裡面有一個 GOPATH,這是需要設定的環境變數。它代表著 go 程式的工作空間(workspace),Windows 預設會設定在 ~\Go,Unix-like 則沒有預設,官方建議設定在 ~/go

Workspace 裡,劃分成三個主要目錄:

  • src - 原始碼
  • pkg - go package
  • bin - 編譯好的執行檔,有需要也可以加入 PATH 環境變數

接著可以使用 go 的第一個指令--go get,它會把目標下載回來放在 src 裡,如:

go get github.com/MilesChou/book-start-golang-30-days

這樣會把上面這個 repo,使用 HTTPS 協定 clone 到硬碟裡。

當如果編譯需要第三方的原始碼時,即可使用 go get 下載,同時這也可以用來下載自己或是第三方的原始碼。把所有原始碼集中成一個大大的 workspace,這就是 go 管理原始碼的概念。

今日回顧

  • 安裝好主程式,設定好環境變數,明天就可以來 Hello World 了!

參考資料