語法對比基礎
本模組探討 JavaScript 和 Go 之間的基本語法差異,涵蓋變數宣告、控制流、函數、資料型別和其他核心語言結構。
變數宣告和型別系統
JavaScript 使用動態型別,變數型別在執行時確定,而 Go 使用靜態型別,具有型別推斷能力。
正在加载...
控制流語句對比
兩種語言都支援類似的控制流結構,但語法和約定不同。
If/Else 語句
正在加载...
For 迴圈
正在加载...
函數定義和呼叫
Go 函數需要顯式的返回型別,與 JavaScript 函數的語法不同。
正在加载...
資料型別和結構
Go 有豐富的內建型別和結構,與 JavaScript 有顯著差異。
正在加载...
作用域和生命週期
兩種語言都有塊作用域,但 Go 的作用域規則更顯式和一致。
正在加载...
錯誤處理
JavaScript 使用 try-catch 進行異常處理,而 Go 使用顯式的錯誤返回值。
正在加载...
基本資料型別對比
Go 有全面的內建型別,每種型別都有特定用途。
JavaScript 型別 | Go 等價型別 | 說明 |
---|---|---|
number | int , int8 , int16 , int32 , int64 , uint , uint8 , uint16 , uint32 , uint64 , float32 , float64 , complex64 , complex128 | Go 有特定的整數大小 |
string | string | 預設 UTF-8 編碼 |
boolean | bool | 相同概念 |
null | nil | 用於指標、介面、切片、map、通道 |
undefined | 無直接等價 | 通常用 nil 或零值表示 |
object | struct , map[string]interface{} | 結構體是分組資料的主要方式 |
array | [n]T (陣列), []T (切片) | 陣列固定大小,切片動態 |
symbol | 無直接等價 | Go 型別系統中不需要 |
bigint | int64 , uint64 , 或外部套件 | 用於任意精度 |
運算子和表達式
大多數算子相似,但 Go 在語法和行為上有一些差異。
正在加载...
練習題:
- 解釋 Go 中
array
和slice
型別的區別,以及何時使用每種型別。 - 編寫一個 Go 函數,接受整數切片並返回總和和平均值,演示多個返回值。
- Go 的錯誤處理與 JavaScript 的異常處理有何不同?提供兩種方法的範例。
- 建立一個 Go 結構體來表示
Person
,包含姓名、年齡和郵箱欄位,然後編寫一個函數來驗證人員資料。
專案想法:
- 在 Go 中建構一個簡單的計算器程式,可以執行基本算術運算,演示函數使用、錯誤處理和使用者輸入處理。與 JavaScript 等效版本進行比較。
下一步:
- 學習 Go 的套件系統和模組管理
- 理解 Go 的型別系統和介面
- 探索 Go 強大的並發特性:goroutines 和 channels