使用 Go (Golang)
概述
Go(亦稱為 Golang)是由 Google 設計並開源的靜態強型別、編譯型程式語言。憑藉簡潔語法、極速編譯、卓越的並行處理能力(透過輕量級 goroutine 與 channel 溝通機制),以及高效的內建垃圾回收,受開發者廣泛認可。Go 非常擅長打造高效能網路服務、分散式系統、微服務與命令列工具,現已是現代雲原生應用及後端開發領域的主流選擇之一。
ServBay 對 Go 的支援
ServBay 是一套支援 macOS 及 Windows 的整合型本機 Web 開發環境,為 Go 開發者提供無縫且強大的工具。借助 ServBay,您可輕鬆安裝、管理並在多個 Go 版本間切換,無須繁瑣配置環境變數(如 GOROOT, GOPATH),讓 Go 開發環境的建立與維護事半功倍。
ServBay 內建完整 Go 工具鏈,並支援眾多版本,從早期到最新穩定釋出,滿足不同專案的多樣需求:
- Go 1.11
- Go 1.12
- Go 1.13
- Go 1.14
- Go 1.15
- Go 1.16
- Go 1.17
- Go 1.18
- Go 1.19
- Go 1.20
- Go 1.21
- Go 1.22
- Go 1.23
- Go 1.24(以及 ServBay 未來可能支援的更新版本)
Go Modules 支援
ServBay 環境預設啟用並推薦使用 Go Modules 來管理依賴。自 Go 1.11 起,官方推行 Go Modules 作為標準依賴解決方案。於 ServBay 終端環境中,您可直接用 go mod 相關指令(如 go mod init, go get, go mod tidy)管理專案套件,無須再煩惱 $GOPATH 傳統設定。
前置條件
- 已於 macOS 成功安裝並啟動 ServBay。
- 具備 Go 程式基礎知識。
- 熟悉終端機(Terminal)基本命令操作。
安裝 Go
經由 ServBay 直覺化圖形介面安裝 Go 非常簡單:
- 啟動 ServBay 應用程式。
- 於左側導覽列點選
套件。 - 在展開的套件列表中找到
Go分類。 - 點選
Go展開後,可見 ServBay 支援安裝的各版本。 - 選擇所需 Go 版本(建議選用最新穩定版,如 Go 1.24),點擊版本旁之
安裝按鈕。 - ServBay 會自動下載並完成安裝,所需時間依據網路速度而定。

安裝完成後,該版本狀態會顯示「已安裝」,您可隨時安裝其他版本或於已安裝版本之間切換。
使用 Go
Go 安裝成功後,可直接於系統終端使用 go 指令集。
若要檢查 Go 是否安裝完畢及顯示目前啟用的版本,可執行:
bash
go version1
終端機會輸出類似以下資訊,顯示由 ServBay 管理的 Go 版本:
go version go1.24.1 darwin/arm641
建立並執行簡易 Go Web 應用程式
以下步驟將帶您用 ServBay 環境建立基本的 Go HTTP 伺服器並編譯運行:
建立專案目錄: 建議於 ServBay 預設網站根目錄
/Applications/ServBay/www下建立 Go 專案資料夾。例如,建立名為go-servbay-demo的目錄。bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo1
2
3初始化 Go Modules: 於專案根目錄(
go-servbay-demo),使用go mod init初始化 Go Modules。模組路徑建議用能代表專案或代碼庫的唯一名稱,本例以目錄名為例。bashgo mod init go-servbay-demo1該指令將在當前目錄產生
go.mod檔案,用於追蹤專案依賴。撰寫 Go 程式碼: 新增
main.go源碼並填入如下內容:gopackage main import ( "fmt" "log" "net/http" "os" ) func handler(w http.ResponseWriter, r *http.Request) { hostname, _ := os.Hostname() fmt.Fprintf(w, "Hello from Go on ServBay!\nHostname: %s\nPath: %s\n", hostname, r.URL.Path) } func main() { http.HandleFunc("/", handler) port := "8080" // 定義伺服器監聽端口 log.Printf("Go web server starting on port %s...", port) log.Printf("Access it at http://localhost:%s", port) // 啟動 HTTP 伺服器 err := http.ListenAndServe(":"+port, nil) if err != nil { log.Fatalf("Error starting server: %s\n", err) } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27此程式將建立一個 HTTP 伺服器,監聽本機 8080 埠口,回應每個要求內容包括 "Hello from Go on ServBay!"、主機名稱及請求路徑。
執行 Go 應用程式: 確認您仍在 ServBay 終端的專案目錄下(
/Applications/ServBay/www/go-servbay-demo),使用go run編譯並執行:bashgo run main.go1若一切順利,您將在終端看到如下日誌,代表伺服器啟動成功:
2024/05/20 15:00:00 Go web server starting on port 8080... 2024/05/20 15:00:00 Access it at http://localhost:80801
2存取應用程式: 開啟瀏覽器,造訪
http://localhost:8080,應見 "Hello from Go on ServBay! Hostname: your-mac-hostname Path: /" 的回應頁面。
使用 ServBay 網站設定反向代理(強烈推薦)
雖然可直接透過 localhost:8080 存取,但本地開發最佳實踐是使用易記網域(例如 go-app.servbay.demo),並藉 ServBay 的網頁伺服器(Caddy、Apache 或 Nginx)實現反向代理。此舉讓 Go 應用像生產環境般以標準 HTTP/HTTPS 埠口提供服務,並輕鬆運用 ServBay 其他強大功能(如自動 HTTPS、整合多重服務)。
- 於 ServBay 建立網站:
- 打開 ServBay GUI,導航至
網站。 - 按下
新增網站。 - 網域名稱: 輸入欲使用本地開發網域,例如
go-app.servbay.demo。 - 網站類型: 選擇反向代理。
- IP 位址: 輸入
127.0.0.1。 - 埠口: 輸入
8080。
- 打開 ServBay GUI,導航至

儲存並重新載入設定: 於 ServBay GUI 儲存網站設定後,請確保重新啟動或重新載入相應 Web 伺服器(Caddy 或 Nginx),使新設定生效。
透過網域存取應用: 現在可於瀏覽器造訪
https://go-app.servbay.demo,ServBay 網頁伺服器會處理並將流量透明轉發至 Go 應用程式。

管理 Go 版本
ServBay 讓多版本 Go 的管理與切換變得極為簡單。
- 切換版本: 在 ServBay GUI 的
套件->Go選單下,您可見所有已安裝 Go 版本。在左側選單開啟設定,可將某一版本設為預設。 - 確認切換: 切換後,重新開啟終端並執行
go version,即可驗證 Go 版本是否已切換成功。
使用 .servbay.config 管理專案級 Go 版本
除全域版本切換外,ServBay 提供更細緻的專案級別版本管理機制,只需於專案根目錄放置 .servbay.config 檔案即可。
運作原理:
使用 ServBay 內建終端 cd 進入包含 .servbay.config 的目錄時,ServBay 會自動偵測並讀取此設定檔。根據檔案裡的配置(如 GO_VERSION),系統會暫時調整終端會話的環境,使 go 指令指向指定版本。
設定檔格式:
.servbay.config 是簡易純文字檔,以鍵值對記錄。指定專案所需 Go 版本時,只需增加 GO_VERSION 一行:
ini
# .servbay.config 範例
# 指定此專案使用 Go 1.22
GO_VERSION=1.22
# 同時可指定其他工具版本
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... 其他設定項 ...
# GOPROXY=https://goproxy.cn,direct1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
優勢:
- 自動切換版本: 進入專案目錄即自動套用指定 Go 版本,免去繁瑣手動切換。
- 專案隔離: 每個專案於預期版本下編譯與執行,避免版本衝突。
- 團隊協作: 將
.servbay.config一併提交至版本控制(如 Git),其他團隊成員複製專案後即可獲得一致的 Go 基礎環境。
使用情境:
假設手上有兩個專案:
project-a需用 Go 1.12project-b則用 Go 1.22 最新版
各自於專案根目錄建立 .servbay.config:
/Applications/ServBay/www/project-a/.servbay.config:iniGO_VERSION=1.121/Applications/ServBay/www/project-b/.servbay.config:iniGO_VERSION=1.221
當您在 ServBay 終端 cd /Applications/ServBay/www/project-a 並執行 go version,會見 Go 1.12.x;若 cd /Applications/ServBay/www/project-b 則顯示 Go 1.22.x。

注意: .servbay.config 影響 ServBay 感知的 基礎 Go 版本。專案細部依賴仍建議使用 Go Modules(go.mod 檔案)管理。
常見問題(FAQ)
Q: 在 ServBay 終端執行
go指令遇到 "command not found" 錯誤?A: 首先,請確認終端機已設定 ServBay 的 PATH 環境。再者,檢查 ServBay GUI
套件->Go是否已安裝至少一個 Go 版本且有預設版本被啟用。Q: 如何於 ServBay 更新 Go 至最新版本?
A: 請定期於 ServBay
套件->Go查詢新版。如有支援新版 Go,列表會顯示,點選安裝即可。完成後在 GUI 切換即可使用。Q: 使用 Go Modules 時套件下載飽受網路限制?
A: Go Modules 預設連至
proxy.golang.org。中國大陸或部分地區常遇網路瓶頸,可設定GOPROXY環境變數選用更快速的鏡像代理,如https://goproxy.cn或https://goproxy.io。可於 ServBay 全域設定或.servbay.config(如GOPROXY=https://goproxy.cn,direct)進行相關設定。Q: Go Web 應用啟動時顯示端口已被占用(address already in use)?
A: 此錯誤表示程式指定端口(如 8080)已被其他進程佔用。可選擇(1)修改 Go 程式監聽其他未被占用端口(如 8081、9000等);或(2)查找並終止該佔用進程。macOS 可用
lsof -i :<port_number>(如lsof -i :8080)查詢進程 ID (PID),再用kill <PID>終止。Q:
.servbay.config與全域 Go 版本切換有何不同?該如何選用?A: 全域切換(於 ServBay GUI 操作)會更動整個系統預設的 Go 版本。
.servbay.config是專案級別的臨時覆寫,每次進入含有該檔案的目錄時才切換版本。建議使用.servbay.config以管理不同專案的版本需求,確保環境隔離與可重現性,尤其在需並行多種 Go 專案時。全域切換則較適合設定最常用的預設版本。
總結
ServBay 為 macOS 下進行 Go (Golang) 開發的工程師提供高效且友善的本機環境。憑藉直覺化圖形操作,您可輕鬆安裝、管理多版本 Go,並透過 .servbay.config 實現專案級版本控管。結合 Go Modules 管理依賴,以及內建 Web 伺服器實現反向代理與應用托管,能快速建立、運行及測試您的 Go 專案。ServBay 大幅簡化環境設置,讓您能安心專注於 Go 程式創新與開發。
