一、包:给代码一个温馨的“家”
想象一下,如果你所有的衣服、书籍、餐具都堆在房间角落,找双袜子得翻半天——这就是没有包管理的代码状态。Go语言的package概念,就像是给代码分配了衣柜、书架、碗柜,让一切井然有序。
作为Gopher(Go程序员昵称),我见过太多新手把几百行代码塞进main.go,最后连自己都找不到上星期写的函数。其实Go包的核心理念很简单:相关功能放在一起,独立功能分开管理。就像你不会把牙刷和鞋子放在同一个抽屉里,也不该把用户验证和数据库操作混在同一文件。
最近接手了个“祖传项目”,10个功能挤在同一个包里,每次修改都像在拆弹。经历三次“手滑改崩功能”后,我彻底理解了Go设计者的良苦用心。现在,就带你从包的使用者变身创建大师!
二、创建你的第一个包:单间公寓
先来最简单的单文件包,适合功能简单的工具集合:
// 文件:calculator/calc.go
package calculator
import "fmt"
// 首字母大写=对外开放,小写=私有空间
var version = "1.0.0" // 私有变量,包外不可见
func Add(a, b int) int {
return a + b
}
func Multiply(a, b int) int {
return a * b
}
// 包初始化函数,Go自动在首次使用时执行
func init() {
fmt.Printf("计算器包 v%s 已加载\n", version)
}
使用这个“单间公寓”:
// 文件:main.go
package main
import (
"fmt"
"yourmodule/calculator" // 替换为你的模块路径
)
func main() {
sum := calculator.Add(10, 5)
product := calculator.Multiply(10, 5)
fmt.Printf("10+5=%d, 10×5=%d\n", sum, product)
// calculator.version = "2.0" // 编译错误!私有变量无法访问
}
重点解析:
package calculator声明了这个文件属于calculator包- 大写字母开头的函数和变量是公开的,小写则是包内私有
init()函数是包的“装修工”,在包首次使用时自动执行
三、多文件包:升级成“豪华套房”
当功能增多时,单文件会变得臃肿。这时可以创建多文件包,就像把单间升级成多房间套房:
yourproject/
├── go.mod
├── main.go
└── finance/ // 财务包
├── tax.go // 税务相关
├── interest.go // 利息计算
└── curren

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



