Like Share Discussion Bookmark Smile

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

Go | 製作並發布自己的套件

💬 簡介

撰寫一個好用的 Go 套件後,是否想過讓更多人受益?只要你能將它模組化並上傳至 GitHub,其他開發者便能透過 go get 輕鬆使用你的作品。

Go 語言的模組系統(Go Modules)讓套件分享變得簡單易行。本篇將手把手教你:

  • 如何建立一個模組化的 Go 套件
  • 如何發布至 GitHub
  • 如何讓其他人透過 go get 使用你的套件

圖片來源:Gophers


🏗️ 建立自己的套件模組

  • 📁 目錄結構設計

    你可以為自己的套件建立一個新的 Git 專案,例如:
    1
    2
    3
    4
    5
    go-greetings/
    ├── go.mod
    ├── greetings/
    │ └── greetings.go
    └── README.md
  • ✏️ 撰寫套件內容

    greetings/greetings.go
    1
    2
    3
    4
    5
    6
    7
    8
    package greetings

    import "fmt"

    // Hello 回傳一段問候語
    func Hello(name string) string {
    return fmt.Sprintf("你好,%s!", name)
    }
  • 🧾 初始化模組

    進入專案根目錄後,執行:
    1
    go mod init github.com/你的GitHub帳號/go-greetings
    例如:
    1
    go mod init github.com/mylab/go-greetings
    系統會產生 go.mod 檔案,宣告模組路徑。

☁️ 發布到 GitHub

  • 🏗️ 建立 GitHub 儲存庫

  1. 前往 GitHub 建立一個公開儲存庫,如 go-greetings
  2. 使用 Git 推送專案內容:
    1
    2
    3
    4
    5
    6
    git init
    git add .
    git commit -m "初始版本"
    git branch -M main
    git remote add origin https://github.com/你的帳號/go-greetings.git
    git push -u origin main

🚀 讓別人使用你的套件

只要你成功將模組推送至 GitHub,其他開發者便可在他們的專案中使用:

1
go get github.com/你的帳號/go-greetings@latest

範例使用方式:

1
2
3
4
5
6
7
8
9
10
package main

import (
"fmt"
"github.com/mylab/go-greetings/greetings"
)

func main() {
fmt.Println(greetings.Hello("小明"))
}

系統會自動從 GitHub 抓取模組內容並加入 go.mod 相依性。


🏷️ 發布版本標籤(可選)

如果你想讓使用者引用特定版本,可使用 Git 標籤(tag):

1
2
git tag v1.0.0
git push origin v1.0.0

使用者便可指定版本安裝:

1
go get github.com/mylab/go-greetings@v1.0.0

💪 測試與最佳實踐

  • ✅ 套件應該具備良好的結構與命名
  • ✅ 建議搭配單元測試與說明文件(README.md)
  • ✅ 上傳前請檢查 go.mod 與 go.sum 正確性
  • ✅ 保持公開權限,並使用乾淨的模組路徑

📚 實用補充資訊

類別 資源說明
官方教學 Go Modules 發布指南
套件探索站 pkg.go.dev
範例專案 greetings example

🎯 總結

將自己的 Go 套件模組化並發布到 GitHub,不僅能提升專案維護性,也能讓其他開發者直接使用並貢獻。

本篇重點如下:

  • ✅ 使用 go mod init 建立模組化專案
  • ✅ 將模組上傳至 GitHub 並設定正確模組路徑
  • ✅ 可透過 go get 讓其他人輕鬆引用你的套件
  • ✅ 支援版本控制(tag)與模組相依管理

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


註:以上參考了
Go