---
# System prepended metadata

title: Golang 入門！強迫症患者會喜歡的程式語言
tags: [Google, Go, 程式設計, Golang]

---

# Golang 入門！強迫症患者會喜歡的程式語言


本系列適合已經具備一定程式語言基礎的人閱覽。

最近有點忙呀，搞了一些想寫的小專案。想起自己 2018 年開始接觸 Golang 以後，隨即棄用了本來蠻喜歡的 Python，畢竟我平常會用 Python 做的事情，Golang 也都可以輕易做到，而且執行效能還更好。雖然還不能算是把這語言運用得非常精熟，但三年來斷斷續續寫了一些自用的簡單小東西，真心覺得像 Golang 這麼棒的程式語言，大家都該來學著用看看。


## Golang 語言簡介

Go（或稱 Golang），是 Google 的團隊在 2009 年開發（並且持續更新至今）的靜態強型別程式語言。Golang 本身是一種編譯語言，可以直接把程式原始碼編譯成原生的 PE 格式，不需要像 Java 或 C# 一樣仰賴 JRE 或 .net framework 的環境來執行，使得 Golang 可以達到接近 C 語言的高效能。

基於其設計模式自帶的優勢，Golang 可以用極低的成本讓函式異步執行——你可以把這句話粗略解釋為「Golang 可以用很少的資源去驅動多個執行緒，平行處理多項工作」——也因此 Golang 很適合用來架設伺服器後端的服務，同一時間處理大量的連線請求。

除此之外，Golang 也同時支援動態陣列、靜態陣列、指標操作、垃圾回收（GC）、雜湊表等等功能，現代的程式語言該有的東西都支援得算是很齊全。

Golang 在某些地方還有著近乎執著的堅持，例如：
* 你不能夠宣告了變數卻沒用到
* 你不能夠引用了函式庫卻沒用到
* 左大括號不可以獨立成一行

包括錯誤處理、變數命名規範等等在內，我們可以從各個環節感受到 Golang 的設計團隊除了希望使用者寫出來的 code 看起來易讀又優雅以外，某種程度上也要求了使用者在開發程式的時候必須清楚地掌握每一句程式碼、每一個變數有什麼用，而不是以「能跑就好」的心態隨意找個堪用的方法呼攏過去，可以說它是有強迫症的語言。

由於 Golang 本身對開發者有著種種要求，這導致了 Golang 的門檻也相對於其他語言還要來得更高。根據我這幾年接觸不同語言的經驗來看，如果你是個完全沒有程式語言基礎的初學者，我個人**不建議**選用 Golang 作為首次接觸的程式語言；相反地，如果你已經接觸過至少兩種程式語言，也對於迴圈、陣列、字串、函式、物件導向程式設計等基礎觀念都有一定程度的掌握，那麼用 Golang 來開發一些工具或服務都是不錯的選擇。


## 開發環境準備和注意事項

首先到[官方網站](https://golang.org/)按照你的作業系統下載 Go 的安裝檔，安裝好開發 Golang 的環境。在你安裝 Go 的時候選擇的路徑，就被稱為 GOROOT（Go 的根目錄）。

安裝好之後要是你想用系統內建的記事本來寫 code 也行啦，只是我相信沒有人想這麼做。由於我平常開發的時候不喜歡安裝太多種笨重的 IDE，我個人會推薦萬用的 [Visual Studio Code](https://code.visualstudio.com/) 作為撰寫 Golang 原始碼的編輯器。

下一步就是安裝讓 VS Code 支援 Golang 專用的延伸模組。打開 VS Code，用快捷鍵 Ctrl+Shift+X 打開延伸模組頁面，搜尋「Go」來安裝，注意不要安裝成「Go Nightly」這套，Nightly 是最新的測試用版本，因為沒有經過長期測試，可能會有部分功能不穩定的情況。

![](https://i.imgur.com/z6s52eg.png)

安裝 VS Code 的 Go 延伸模組之後，像是自動排版、自動完成之類的常用功能也就都有了。

接下來介紹一下剛才提到的 GOROOT 吧。假設你的 GOROOT 位置是 C:\Go\，那麼你會看到 C:\Go\src\ 資料夾裡面裝有 Golang 預設提供給你的官方函式庫，包括 fmt、time、net……等等。當你用 Golang 寫程式時引用了函式庫，Golang 的編譯器就會自動從這裡優先找，從這裡找不到的話就會往 GOPATH 底下的 src 資料夾找。

那麼 GOPATH 又是什麼呢？你可以把 GOPATH 理解為「使用者自己的工作區」，這底下的 src 資料夾除了可以用來放你自己寫的專案以外，從 GitHub 等地方下載下來的第三方函式庫也會放在這底下的 src 資料夾裡面。GOPATH 的位置預設會在 %USERPROFILE%\Go\，像我的 GOPATH 就是 C:\users\johnn\go\，其中 johnn 是我電腦的使用者名稱。

你可以在 cmd 或是 PowerShell 上面使用像是這樣的指令來修改自己的 GOPATH：
go env -w GOPATH="D:\MyGOPATH"


## 測試你的 Go 開發環境

我們可以自己找個喜歡的地方創設專案資料夾，比如說取名叫做 test，然後在裡面新增一個檔案 main.go：

![](https://i.imgur.com/kZBpt65.png)

接下來用 VS Code 打開這個 test 資料夾——注意！是**打開資料夾**而不是只有打開檔案，這樣編譯器才可以讀到整個專案資料夾的完整內容，避免一些不必要的麻煩——我們可以從功能列的「檔案 > 開啟資料夾…」（File > Open folder...）來選擇 test 資料夾並開啟。

![](https://i.imgur.com/QBFO8A3.png)

![](https://i.imgur.com/9P2m6JW.png)


試著在 main.go 裡面寫上基本的 Hello world：

```go
package main

import "fmt"

func main() {
    fmt.Println("Hello, world!")
}
```

Ctrl+S 儲存檔案，接著用 [Ctrl]+[~] 快捷鍵打開終端機（terminal），就會顯示出 cmd（或 PowerShell）的區域，讓你可以直接在上面用 DOS 模式執行指令。

試著執行：

go run main.go

我們會看到程式正常地被編譯並執行，這也就代表你的開發環境已經初步建立完畢：

![](https://i.imgur.com/xFQQxVT.png)

go run 的指令用來編譯並執行某個檔案，通常會在系統暫存區 %TEMP% 底下自動產生一個 go-build 開頭名稱的資料夾，然後把編譯好的程式放在那裡面執行。如果你希望把編譯好的 exe 執行檔留下來，那麼只要改用「go build main.go」指令，編譯好的 exe 檔就會留在你的專案資料夾裡面。

有的時候我們專案裡不只會有一個原始碼檔案，那麼我們可以用一個半形的句號「.」來代表資料夾底下的所有檔案，也就是說直接執行「go run . 」就可以了，「go build . 」也同理。


## 無法正常編譯，怎麼辦？

通常現在的 Golang 安裝好就不需要再手動設定額外的東西了，不過為求謹慎，還是在這裡講一下環境變數有問題的時候如何排除吧。

如果出現了「無法辨識 'go' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。」之類的訊息，那就代表系統沒有抓到 go 的核心執行檔 go.exe，你可以用 Windows+R 的快捷鍵，輸入 control 叫出控制台，找到「系統 > 進階系統設定 > 進階 > 環境變數 > 系統變數」來確認 GOROOT 底下的 bin 資料夾是不是在 Path 裡面：

![](https://i.imgur.com/Vx4R20b.png)

![](https://i.imgur.com/NqWz8yn.png)

![](https://i.imgur.com/UfE5Tym.png)

![](https://i.imgur.com/LE9Z0Vx.png)

因為當我們執行「go run main.go」的時候，實際上系統是從環境變數的 Path 列表找到 go.exe 來傳入 run main.go 的參數，在我的電腦上這整句指令就相當於：

C:\Go\bin\go.exe run main.go

所以如果你沒有辦法在 Path 列表裡面找到 GOROOT 下面的 bin 資料夾，那麼你可以自己新增，然後重新開機讓它生效，這樣應該就 OK 了。



第一篇就先簡單介紹到建立好開發的環境為止吧，畢竟再講下去就要把套件管理一口氣講完了，之後再來繼續分享使用 Golang 開發的步驟跟注意事項。

###### tags: `Go` `Golang` `Google` `程式設計`