這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
Go1.5 改進簡介
- 純Go(+少量彙編)實現 runtime 和 編譯器
- 改進 記憶體回收行程, 支援 並發 (有個指標好像是 停頓在 10 毫秒以內).
- GOMAXPROCS 預設值改為 CPU 核心數
- internal 限制規則推廣到第三方包 (之前只有 std 包啟用)
- 增加 vendor 支援, 基本解決 第三方庫的依賴問題和版本問題
- 增加 trace 命令, 更友好的剖析程式運行狀態
- 增加 go doc 命令
文法變化
增加 map 字面量. 以前的代碼:
m := map[Point]string{ Point{29.935523, 52.891566}: "Persepolis", Point{-25.352594, 131.034361}: "Uluru", Point{37.422455, -122.084306}: "Googleplex",}
現在不需要每個都寫 Point 了:
m := map[Point]string{ {29.935523, 52.891566}: "Persepolis", {-25.352594, 131.034361}: "Uluru", {37.422455, -122.084306}: "Googleplex",}
工具變化
之前的 6g/8g 之類的命令合并為一個了: go tool compile,
彙編器和連接器也同樣合并為一個了: go tool asm, go tool link.
目標檔案統一用 .o 為尾碼.
跨平台編譯更簡單了:
$ export GOOS=darwin GOARCH=amd64$ go tool compile program.go$ go tool link program.o
另外, vet 和 cover 已經穩定, 移到核心倉庫.
go build 增加了 -buildmode 參數(Windows還不支援),
可以產生給C/C++使用的動態庫和靜態庫(會有人用Go給Python/Ruby之類的語言寫擴充嗎?).
cgo 部分, Windows 終於支援外部連結, 也就是可以靜態編譯連結C++庫了.
同時, 增加了一個 ${SRCDIR} 參數, 用於解決 link 時 目前的目錄變化導致找不到 .a 檔案的問題.
標準庫部分
http://tip.golang.org/doc/go1.5#library