Go语言中函数首字母大写即可在包外访问,小写则仅限包内使用;2. 在其他包导入后只能调用大写的公共函数,如utils.PublicFunction(),无法访问小写的私有函数;3. 可见性基于包,同一包内所有文件可共享非导出成员;4. 命名需清晰并配文档注释,公共标识符应遵循规范。

在 Go 语言中,要让一个函数在包外可访问(即公共函数),只需要将函数名的首字母大写。Go 通过标识符的首字母大小写来控制可见性:大写表示对外公开,小写表示包内私有。
公共函数的定义方式
假设你正在创建一个名为 utils 的包,想要提供一个可以被其他包调用的函数:
// utils/utils.go
package utils
import "fmt"
// PublicFunction 是一个公共函数,可在包外调用
func PublicFunction() {
fmt.Println("这是一个公共函数")
}
// privateFunction 是私有函数,仅限当前包内使用
func privateFunction() {
fmt.Println("这是一个私有函数")
}
如何在其他包中使用
在另一个包中导入 utils 后,就可以调用首字母大写的公共函数:
// main.go
package main
import "your-module/utils" // 替换为你的模块路径
func main() {
utils.PublicFunction() // ✅ 可以调用
// utils.privateFunction() // ❌ 编译错误:不可访问
}
关键规则说明
- 函数名、变量名、常量名、类型名等,只要首字母大写,就在包外可见
- 可见性是基于包的,不是基于文件的。同一个包内的所有文件都可以访问彼此的非导出(小写)成员
- 导入包后,只能使用其中的公共(大写)函数
- 命名应清晰表达意图,公共函数尤其要注意命名规范和文档注释
基本上就这些。Go 的设计简洁直接:大写 = 公共,小写 = 私有。不依赖关键字如 public 或 private,而是通过语法层面的命名约定实现封装。










