go 语言的包的管理
go包的基本规则
- 每一个go文件必须声明一个package,表明该文件所属的包
- 包名往往和所处的目录名一致
- 一个目录下的所有go 文件必须同属于一个包
文件名规范
- 文件名应该简介明了,通常定义了文件中所定义的相关内容
- 文件名应该是小写,另外文件名和文件名之间应该使用下划线进行分割
- 文件名不需要和包名一致,但要反应文件的功能
myproject/
├── go.mod # 模块定义文件
├── main.go # 主程序入口
├── pkg/ # 项目内部的通用代码
│ ├── utils/ # 工具包
│ │ ├── utils.go
│ │ └── string_utils.go
│ └── math/ # 数学相关功能
│ └── math.go
├── internal/ # 内部包(仅限本模块使用)
│ └── db/ # 数据库相关代码
│ └── db.go
└── cmd/ # 各种命令的入口
└── myapp/ # 子命令
└── main.go
- go.mod 定义模块名和依赖管理
- main.go 程序的入口文件,通常属于main 包
- pkg 公共包,供其他项目和模块使用
- internal 内部包供当前模块使用,不能被外部导入
- cmd 存放可执行程序的入口文件
包的明明规范
- 包名应该与目录名一致,且使用小写字母
- 包名应该简介明了,避免与标准包名冲突
- 报名往往是单数形式
导入包的规则
- 使用模块路径导入包
- 包的导入路径从 go.mod 定义的模块名开始
工程规范建议
- 模块化涉及,将功能柴扉为多个包,每个负责单一职责
- 合理使用internal, 将不希望外部使用的代码放入internal 目录中
- 保持目录的清晰,避免将所有代码放在一个目录中
包的寻址规则
包的寻址依赖于模块路径和目录结构
- 模块路径:由go.mod 中的模块名决定
- 目录结构:包的导入路径与文件的目录结构一致

浙公网安备 33010602011771号