Go 是一種編譯式、垃圾回收、併發程式語言,由 Google Inc. 開發。 [1]
逐項比較
- 理念 - Go [2] 和 Lua [3]
- 類型系統 - Go 支援靜態類型,但沒有繼承或任何類型間的關聯性。
- 類型 - Go 中內建類型數量較多(例如各種大小和有/無號整數),而 Lua 程式碼通常只使用數字類型(一般是浮點數)。對於 Lua,也可參考 [LNUM 補丁]。
- 多個回傳值 - 兩種語言都支援
- 字串在兩種語言中都是不可變的
- C/C++ 介面 - Lua 中發展得很好 (BindingCodeToLua)。Go 可使用 cgo[4] 連結到 C,而 SWIG 目前支援 Go。 [5]。
- 併發 - Lua 和 Go 都支援某種形式的 co-routine('goroutine' 在 Go 中)。Go 具有通道(channel),使併發更安全,而 goroutine 可以多工運算在併發執行緒上(請參閱 GOMAXPROCS 執行時期選項)。
- RAII/例外 - Go 的 'defer' 陳述式支援在範圍離開時執行(函式,而不是區塊級別) [6]。Lua 本來不支援它,但請參閱 ResourceAcquisitionIsInitialization。Go 和 Lua 沒有 try-catch 陳述式 [7],但 Lua 中的 pcall 函式類似,同樣地,Go 中也有 panic/recover 建構。
- 標準函式庫 - Go 較大 [8] 且不限於 ANSI C。
- 穩定性 - Go 1 版本很穩定[[9]] 且廣泛用於產品[10]。Lua 是成熟的語言和實作。另請參閱 LuaFiveTwo
- 編譯器 - Go 擁有兩個完全穩定的編譯器,主要的 'gc' 編譯器和 gccgo[11],目前也有一個正在開發的 llvm 前端:llgo[12]。Lua 有 LuaImplementations。
- 語法 - Go 比 Lua 更接近 C 大括號和註解語法,不過在很多方面仍偏離 C [13]。
- 執行時期速度 - Lua 和 Go 都強調效率,尤其是 Lua 的 LuaJIT 實作。Go 是一個現成的編譯式語言。
- 編譯速度 - Lua 和 Go 都強調編譯速度。Go 在處理大型專案樹方面有新穎的方法,能大幅提升速度。
- 指標 - Go 有指標,但沒有指標算術,以策安全 [14]。Lua 沒有指標。
- 垃圾回收 - Lua 和 Go 都使用垃圾回收。 [15]
- 移植性 - 若有 ANSI C 編譯器,即可在任何地方執行 Lua。Go 可在類似 Unix 的系統和 Windows 上執行。Plan 9 埠正在開發中。
- Go 有命名結果參數 [16](另請參閱:上述多項傳回值)。
- Go 有 Python 風格切片。
另請參閱
近期變更 · 喜好設定
編輯 · 歷史
最後編輯時間:2012 年 8 月 16 日上午 11:34 GMT (比較)