型別系統與介面
本模組探討 Go 的型別系統和介面,這是 Go 設計哲學的基礎。Go 的型別系統是靜態型別的,但透過介面提供了一些動態特性,在安全性和靈活性之間取得了平衡,這與 JavaScript 的動態型別有顯著不同。
Go 型別系統概述
Go 是一種靜態型別語言,意味著型別在編譯時檢查。與 JavaScript 的動態型別相比,這提供了更好的效能、更早的錯誤檢測和更清晰的程式碼文件。
靜態型別 vs 動態型別
正在加载...
基本型別
Go 提供了比 JavaScript 原始型別更豐富的顯式基本型別集合。
數值型別
正在加载...
字串和布林型別
正在加载...
複合型別
Go 提供了幾種複合型別,允許將值組合在一起。
陣列和切片
正在加载...
映射
正在加载...
結構體
正在加载...
介面
介面是 Go 最強大的特性之一,提供了一種定義行為而不涉及實作細節的方式。
介面基礎
正在加载...
介面組合
正在加载...
空介面
正在加载...
型別斷言和型別開關
Go 提供了與介面型別動態工作的機制。
型別斷言
正在加载...
型別開關
正在加载...
型別嵌入和組合
Go 使用組合而不是繼承,透過結構體嵌入實現。
正在加载...
練習題:
- 解釋 Go 的靜態型別與 JavaScript 動態型別的區別。每種方法的優缺點是什麼?
- Go 介面與 JavaScript 的鴨子型別有何不同?提供每種方法有益的場景範例。
- 描述 Go 的結構體嵌入以及它與 JavaScript 類繼承的比較。何時使用每種方法?
- 建立一個 Go 程式,演示介面組合、型別斷言和型別開關的實際範例。
專案想法:
- 在 Go 中建構一個簡單的形狀計算器,使用介面處理不同的幾何形狀(圓形、矩形、三角形)。實作面積和周長計算,並使用型別開關處理不同的形狀型別。與使用類和繼承的 JavaScript 實作進行比較。
下一步:
- 學習 Go 的並發特性:goroutines 和 channels
- 探索 Go 的錯誤處理模式和最佳實踐
- 理解 Go 的套件管理和模組系統