Go 程式設計教學:建置環境

PUBLISHED ON AUG 26, 2017 — PROGRAMMING

經過上一篇文章的介紹,相信讀者對 Go 的使用情境會有一定的概念,能夠在適當的時機使用 Go。接下來,在這篇文章中,我們會介紹如何建置 Go 開發環境,準備實際撰寫 Go。對於程式設計來說,除了閱讀相關的學習資料外,實際撰寫程式,透過手指肌肉來加強記憶,也是相當重要的。本文會分別以 Windows、Mac、GNU/Linux 三個主要的平台來介紹 Go 環境建置。

Go Playground

如果只是想嘗試一下 Go 的語法,可以在 Go Playground 中撰寫 Go 程式,這是一個網頁程式,透過瀏覽器即可直接執行。當然,這個線上環境無法取代真正的開發環境,只是用來練習基礎語法;如果真的要開發 Go 程式,仍然要在本地端建立開發環境。

在 Windows 上安裝 Go

在 Windows 平台下安裝 Go 相當簡單,只要到官網下載安裝檔,按照指示安裝即可,應該不會有什麼問題。通常有問題是在其他方面:

  • 設置環境變數 (environment variable),我們會於後文中一併介紹
  • (選擇性) 安裝 C 和 C++ 編譯環境

為什麼需要安裝 C 和 C++ 編譯環境呢?因為有些用 C 和 C++ 開發的專案相當地成熟,不太會為了換語言就重寫,通常是使用 Go binding 的方式間接使用這些專案。說實在的,Windows 家族系統對 C (和 C++) 相對不友善,許多高階語言要在 Windows 下使用延伸模組,都會碰到類似的議題,每個語言後來各自發展出一些解決方案,筆者曾在這篇文章介紹這個議題,有興趣的讀者可自行前往觀看。使用 Go 本身即可撰寫許多程式,一開始學 Go 時,不需要急著建置 C (和 C++) 開發環境,等到真的有需要時再處理即可。

在 Mac 上安裝 Go

雖然 Go 官網有 Mac 用的安裝檔,但比較推薦使用 Homebrew 來安裝 Go,便於日後管理。安裝 Homebrew 也不會太困難,所需條件如下:

  • Intel CPU,近幾年的 Mac 都換成 Intel CPU 了
  • OS X 10.0 以上
  • Command Line Tool (CLT) for Xcode,就是 C/C++ 編譯環境和其他開發工具
  • 使用 Bash 或 Zsh

節錄安裝過程如下:

# Install CLT
$ xcode-select --install
 
# Install Homebrew
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/)”
 
# Install Go
$ brew install go

在 GNU/Linux 上安裝 Go

GNU/Linux 版的 Go 以 binary tarball 形式散布,解壓縮到自己習慣的位置即可。參考過程如下:

# Make destination directory
$ mkdir ~/opt
 
# Untar the tarball
$ tar -xf goX.Y.Z.linux-amd64.tar.gz -C ~/opt
 
# Set PATH in ~/.bashrc or ~/.zshrc

我們會在後文中介紹有關環境變數的部分。

管理多版本的 Go

由於 Go 的相容性做得還不錯,Go 的語言特性也算穩定,其實不太需要守在某個特定的舊版本。不過,如果有某些特殊需求,需要使用多個版本的 Go,可以考慮使用 gvm 來管理 Go 版本。gvm 本身以 Bash 寫成,需要在類 Unix 系統下才能使用;筆者本身沒有使用這個工具,有需要的版友請自行參考。

設置環境變數

安裝 Go 時,需要設置 GOROOTGOPATH 這兩個環境變數,環境變數來自 Unix 文化圈,對某些初學者,尤其是 Windows 使用者,會產生混淆。這兩個環境變數都是設置目錄路徑;其中 GOROOT 是 Go 開發工具本身所在的位置,Go 開發工具和標準函式庫等都放在這個路徑之下;GOPATH 則是專案和第三方套件所在的位置,不可以和 GOROOT 重覆,通常建議把專案放在 GOPATH 所在的目錄之下,編譯專案時較不會出問題。

GOPATH 底下有三個子目錄,分別是:

  • bin/:存放專案所產生的執行檔
  • pkg/:存放專案所產生的函式庫檔
  • src/:存放專案原始碼

這種目錄配置也是仿 Unix 文化的設計。若沒有將專案存在 GOPATH 之下,對於較複雜的專案會較難編譯。這個設計對初學者來說較不習慣;實際建立過幾個專案就會記得,我們將於後文中介紹如何建立 Go 專案。

另外,還有兩個隱藏的變數:

  • GOOS:作業系統,如 windows、darwin、linux 等
  • GOARCH:電腦硬體架構,如 x86、x64、arm 等

除了交叉編譯 (cross-compiling) 以外,通常我們不會用到這兩個變數。

測試環境

在終端機下輸入 go version,即可看到系統上 Go 的版本:

$ go version
go version go1.10 linux/amd64

若無法看到版本號,就需依照系統錯訊息處理。

編輯器或 IDE

在撰寫 Go (或其他程式語言) 程式時,不會用 Notepad (記事本) 這種陽春的軟體,而會使用某種支援程式碼的編輯器 (editor) 或 IDE (整合式開發環境)。編輯器或 IDE 孰優孰劣是個人主觀問題,沒有固定的答案。對於初學者來說,使用編輯器較佳,可專注在撰寫程式碼上,而不會過度依賴 IDE;等到一段時間後,再轉到 IDE 即可。由於 Go 相關的工具沒有綁定某個 IDE,轉換上不會太困難。

一些常見的編輯器如下:

  • Sublime Text
  • Atom
  • Visual Studio Code
  • Notepad++ (Windows only)

一些常見的 IDE 如下:

  • Gogland
  • IntelliJ IDEA, Ultimate edition 加上 plugin
  • Komodo IDE

筆者自己目前使用 Visual Studio Code 為主,搭配一些 plugin,使用起來像是半個 IDE,個人使用經驗覺得還不錯。偶爾會使用 Cloud 9 (詳見此文) 在雲端環境撰寫程式碼;讀者可自行依喜好選擇。由於 Go 本身即內建一些工具,在 IDE 的選擇上相對會自由一些。

經過本文介紹,讀者應該已經建立好 Go 開發環境。在下一篇文章中,我們會開始建立 Go 專案及撰寫 Go 程式。

TAGS: GO 語法, DEV, GOLANG
comments powered by Disqus