langShift

語法對比基礎

本模組探討 JavaScript 和 Go 之間的基本語法差異,涵蓋變數宣告、控制流、函數、資料型別和其他核心語言結構。

變數宣告和型別系統

JavaScript 使用動態型別,變數型別在執行時確定,而 Go 使用靜態型別,具有型別推斷能力。

正在加载...

控制流語句對比

兩種語言都支援類似的控制流結構,但語法和約定不同。

If/Else 語句

正在加载...

For 迴圈

正在加载...

函數定義和呼叫

Go 函數需要顯式的返回型別,與 JavaScript 函數的語法不同。

正在加载...

資料型別和結構

Go 有豐富的內建型別和結構,與 JavaScript 有顯著差異。

正在加载...

作用域和生命週期

兩種語言都有塊作用域,但 Go 的作用域規則更顯式和一致。

正在加载...

錯誤處理

JavaScript 使用 try-catch 進行異常處理,而 Go 使用顯式的錯誤返回值。

正在加载...

基本資料型別對比

Go 有全面的內建型別,每種型別都有特定用途。

JavaScript 型別Go 等價型別說明
numberint, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, float32, float64, complex64, complex128Go 有特定的整數大小
stringstring預設 UTF-8 編碼
booleanbool相同概念
nullnil用於指標、介面、切片、map、通道
undefined無直接等價通常用 nil 或零值表示
objectstruct, map[string]interface{}結構體是分組資料的主要方式
array[n]T (陣列), []T (切片)陣列固定大小,切片動態
symbol無直接等價Go 型別系統中不需要
bigintint64, uint64, 或外部套件用於任意精度

運算子和表達式

大多數算子相似,但 Go 在語法和行為上有一些差異。

正在加载...

練習題:

  1. 解釋 Go 中 arrayslice 型別的區別,以及何時使用每種型別。
  2. 編寫一個 Go 函數,接受整數切片並返回總和和平均值,演示多個返回值。
  3. Go 的錯誤處理與 JavaScript 的異常處理有何不同?提供兩種方法的範例。
  4. 建立一個 Go 結構體來表示 Person,包含姓名、年齡和郵箱欄位,然後編寫一個函數來驗證人員資料。

專案想法:

  • 在 Go 中建構一個簡單的計算器程式,可以執行基本算術運算,演示函數使用、錯誤處理和使用者輸入處理。與 JavaScript 等效版本進行比較。

下一步:

  • 學習 Go 的套件系統和模組管理
  • 理解 Go 的型別系統和介面
  • 探索 Go 強大的並發特性:goroutines 和 channels