Go | 建立與管理自定義套件
💬 簡介
在 Go 語言中,透過自定義套件的拆分與組織,可以讓專案結構更加清晰、維護更為容易。
不論是共用邏輯、工具模組、或是大型功能模組化,套件化設計都是不可或缺的能力。
本篇文章將介紹:
- 如何建立自定義套件
- 套件檔案的分割與命名
- 公開(大寫)與私有(小寫)函式的管理方式
圖片來源:Gophers
🧱 建立自定義套件的基本流程
🛠 建立資料夾與檔案
每個自定義套件對應一個資料夾,並以該資料夾名稱作為
package
名稱。1
2
3
4project/
├── mathutil/
│ └── add.go
├── main.go✏️ 撰寫套件內容
mathutil/add.go
1
2
3
4
5
6
7
8
9
10
11package mathutil
// 公開函式
func Add(a, b int) int {
return a + b
}
// 私有函式
func subtract(a, b int) int {
return a - b
}📝 一個套件中的所有檔案都應使用相同的
package
名稱。📥 匯入並使用自定義套件
main.go
1
2
3
4
5
6
7
8
9
10
11package main
import (
"fmt"
"example.com/project/mathutil"
)
func main() {
result := mathutil.Add(3, 7)
fmt.Println(result) // 輸出:10
}📝 自定義套件會根據專案的模組路徑(例如
example.com/project
)進行匯入。
🗂 分割檔案與模組化設計
若套件功能較多,可將不同功能拆成多個 .go
檔案,但仍屬於相同 package
。
1 | project/ |
mathutil/multiply.go
1 | package mathutil |
mathutil/helper.go
1 | package mathutil |
📝 套件內多檔案共享相同作用域,可互相呼叫私有函式。
🔒 管理公開與私有函式
Go 語言以首字母大寫代表公開(exported),首字母小寫則為私有(unexported)。
1 | // 公開函式,可被 main 或其他套件引用 |
此命名機制有助於維持封裝性與模組責任清晰。
📝 延伸閱讀:Go | 井然有序:解析套件作用域可見性
🚧 小提醒:檔名與型別命名習慣
項目 | 命名建議 |
---|---|
檔案名稱 | 以功能為名,例如 add.go 、math.go |
套件名稱 | 簡短小寫單字,例如 mathutil |
公開識別符 | 大寫開頭,例如 Add() 、Multiply() |
私有識別符 | 小寫開頭,例如 subtract() 、square() |
💡 保持一致的命名風格,有助於團隊溝通與維護。
🧪 測試自定義套件
自定義套件可直接使用相同 package
撰寫測試:
mathutil/add_test.go
1 | package mathutil |
📝 測試程式與實作程式在同一套件下,可直接存取私有函式。
🎯 總結
建立與管理自定義套件,是 Golang 實作模組化與封裝設計的基礎能力。
本文內容回顧:
- ✅ 每個套件對應一個資料夾
- ✅ 套件內檔案須使用相同
package
名稱 - ✅ 函式首字母大寫為公開,小寫為私有
- ✅ 可分檔實作功能,保持邏輯清晰
- ✅ 測試檔案可直接使用私有函式進行驗證
清楚的套件組織,有助於團隊合作、模組重用與系統擴展。
最後建議回顧一下 Go | 菜鳥教學 目錄,了解其章節內容。
註:以上參考了
Go