Like Share Discussion Bookmark Smile

J.J. Huang   2025-06-06   Getting Started Golang 07.套件   瀏覽次數:次   DMCA.com Protection Status

Go | 使用模組化系統來管理

💬 簡介

Go 在 1.11 版之後正式導入模組系統(Go Modules),並自 1.16 起成為預設建置方式。

模組系統提供了穩定的套件管理機制,不再依賴 $GOPATH,大幅簡化專案依賴的管理流程。

本篇文章將說明:

  • 如何初始化與使用 go mod
  • go.modgo.sum 的作用
  • 管理第三方套件依賴
  • 常見指令與實務操作技巧

圖片來源:Gophers


🧱 go mod 初始化與專案建立

  • 🛠 建立專案與初始化模組

    1
    2
    3
    mkdir myproject
    cd myproject
    go mod init example.com/myproject

    執行後會產生 go.mod 檔案:

    1
    2
    3
    module example.com/myproject

    go 1.22

    📄 go.mod 紀錄專案的模組名稱與 Go 版本,並隨著相依套件變動自動更新。

  • ✏️ 建立一個簡單檔案

    main.go

    1
    2
    3
    4
    5
    6
    7
    package main

    import "fmt"

    func main() {
    fmt.Println("Hello, Go Modules!")
    }

    此時執行 go run .go build,將自動使用模組系統建置專案。


🔍 管理相依套件(dependency)

  • 📥 匯入第三方套件

    以安裝 github.com/google/uuid 套件為例:

    1
    2
    3
    import "github.com/google/uuid"

    id := uuid.New()

    只要在程式碼中使用該套件,並執行:

    1
    go mod tidy

    將自動下載套件,並更新 go.modgo.sum

  • 📁 go.mod 檔案內容示例

    1
    2
    3
    4
    5
    6
    7
    module example.com/myproject

    go 1.22

    require (
    github.com/google/uuid v1.3.1
    )
  • 📁 go.sum 是什麼?

    此檔案記錄所有相依套件的精確版本與雜湊碼,確保每次建置都能還原相同的依賴環境。

    ⚠️ 請務必將 go.sum 一併提交至版本控制中。


🧰 常用 go mod 指令一覽

指令 功能說明
go mod init 初始化模組
go mod tidy 自動補齊缺失依賴,移除未使用依賴
go mod download 下載 go.mod 中所有套件
go mod verify 驗證下載的模組與雜湊是否一致
go list -m all 顯示所有相依模組
go get example.com/pkg@v1.2.3 指定版本取得特定模組
go mod edit 手動編輯 go.mod(進階用)
  • 範例:升級某個套件至最新版本
    1
    go get github.com/google/uuid@latest
  • 範例:移除未使用套件
    1
    go mod tidy

    📝 go mod tidy 是常用指令,請養成每次更動後都執行的習慣,保持模組檔案整潔。


📦 模組與套件的關係

  • 模組(module):由 go.mod 定義的整體專案單位。
  • 套件(package):模組中不同子目錄的邏輯單位(每個資料夾一個套件)。

例如:

1
2
3
4
5
myproject/
├── go.mod ← 模組根目錄
├── main.go
└── util/
└── math.go ← 子套件

引用方式:

1
import "example.com/myproject/util"

📝 模組提供整體路徑基礎,套件則依資料夾分工模組化。


🧪 go mod 測試與建置整合

Go Modules 與測試、建置流程高度整合,搭配 go testgo build 等指令使用無縫順暢。

1
2
3
go test ./...
go build
go run .

可確保所有相依模組會一併正確處理。

建議搭配 .gitignore 忽略下列目錄:

1
2
3
/vendor/
/bin/
/*.exe

📝 若有使用 vendor 模式(離線建置),可使用 go mod vendor 指令產生套件備份資料夾。


🎯 總結

Go Modules 為現代 Golang 專案管理提供了穩定、可預測的依賴環境,建議所有專案皆使用模組系統來建置。

本篇總結如下:

  • ✅ 使用 go mod init 建立模組
  • ✅ 透過 go.modgo.sum 管理相依套件
  • ✅ 掌握 go getgo mod tidygo mod download 等指令
  • ✅ 清楚模組與套件的對應關係
  • ✅ 模組系統支援版本控制與團隊合作

最後建議回顧一下 Go | 菜鳥教學 目錄,了解其章節內容。


註:以上參考了
Go