Intro
安裝
至官方下載頁面依據OS環境下載並安裝Golang: https://golang.org/doc/install
檢查Golang版本:
$ go version
Quickstart
-
在任一專案目錄下建立
./hello.go
:package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
} -
使用
run
指令快速直譯執行程式碼:$ go run .
Go Modules - Package套件管理
在專案目錄下利用 mod ini
指令初始 Go modules 後即完成專案套件相依管理,此專案下程式所 import 到的 packages 將會自動安裝載入:
$ go mod init
Golang 套件 import 較嚴格,未於程式引用到的 package 將會報錯提醒。
官方套件範例
編譯與安裝
Compile and install the application
使用build
指令編譯程式,Golang會依照OS環境編譯出可執行檔:
$ go build
可執行檔範例:
// Linux or Mac
$ ./hello
Hello, World!
// Windows
$ hello.exe
Hello, World!
專案環境變數 - Environment Variable
若要在專案中簡易使用.env
,可以試試joho/godotenv套件的懶人載入法:
import _ "github.com/joho/godotenv/autoload"
-
joho/godotenv (提供Autoload懶人解法)
-
spf13/viper (支援多種格式)
-
- *
Web Applications 建置
Goroutine - Concurrency (並發/並行)
Golang 採用 CSP(Communicating Sequential Process) 模式實現 Goroutine 輕量級協程,透過 Multi-threading 實踐,不需應用到 Multi-processing。
Goroutine和channel的详细理解(一) # Day14 Go併發症狀- Goroutines (go) - iThome
GOMAXPROCS
此參數用來限制程式執行時 CPU用到的最大核心數量。目前預設值是本機核心數。
func GOMAXPROCS - runtime package
sync.Mutex (互斥鎖)
互斥鎖 sync.Mutex
可以限制同時間只有一個 goroutine 能存取該變數。
Go 簡單例子來理解 sync.Mutex 和 sync.RWMutex