langShift

套件系統與模組化

本模組探討 Go 的套件系統和模組管理,這是組織和建構 Go 程式碼的基礎。與 JavaScript 的模組系統不同,Go 使用獨特的方法進行套件管理和依賴解析。

理解 Go 套件

Go 中的套件是一種將相關程式碼分組在一起的方式。每個 Go 檔案都屬於一個套件,套件是程式碼組織和重用的主要機制。

套件宣告

每個 Go 檔案都必須以套件宣告開始,這決定了套件名。

正在加载...

Go 模組 vs JavaScript 套件管理器

Go 模組是 Go 中管理依賴的現代方式,類似於 JavaScript 中的 npm/yarn,但有一些關鍵差異。

模組初始化

正在加载...

套件組織和結構

Go 有特定的約定來組織套件和專案。

標準專案佈局

正在加载...

匯入系統

Go 的匯入系統比 JavaScript 更嚴格,需要顯式匯入並遵循特定約定。

匯入類型和用法

正在加载...

套件可見性和匯出

Go 使用大小寫來控制可見性,與 JavaScript 的顯式匯出/匯入系統不同。

正在加载...

Go 模組和依賴管理

Go 模組提供了具有版本控制和可重現建構的現代依賴管理方法。

模組檔案

正在加载...

依賴管理命令

正在加载...

套件類型和約定

Go 有幾種具有特定目的和約定的套件類型。

Main 套件

main 套件在 Go 中是特殊的 - 它是可執行程式的進入點。

正在加载...

函式庫套件

函式庫套件是可以被其他套件匯入的可重用程式碼。

正在加载...

內部套件

Go 有一個特殊的 internal 目錄,用於只能在同一模組內使用的套件。

正在加载...

Vendor 目錄和依賴管理

Go 支援供應商依賴,用於離線開發和可重現建構。

正在加载...

工作區支援 (Go 1.18+)

Go 工作區允許在單個工作區中管理多個模組,類似於 JavaScript 單體倉庫。

正在加载...

練習題:

  1. 解釋 Go 的套件系統與 JavaScript 模組系統的區別。每種方法的優缺點是什麼?
  2. Go 中 internal 目錄的意義是什麼,它與 JavaScript 處理私有模組的方法有何不同?
  3. Go 基於大小寫的可見性系統如何工作,它與 JavaScript 的顯式匯出/匯入系統相比如何?
  4. 建立一個具有多個套件的 Go 模組,並演示如何使用標準 Go 專案佈局組織程式碼。

專案想法:

  • 使用 Go 模組建構一個簡單的 Web 應用程式。為處理器、模型和實用程式建立單獨的套件。使用標準 Go 專案佈局,演示正確的套件組織、依賴管理和模組結構。

下一步:

  • 學習 Go 的型別系統和介面
  • 探索 Go 強大的並發特性:goroutines 和 channels
  • 理解 Go 的錯誤處理模式和最佳實踐