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 中的模块名决定
  • 目录结构:包的导入路径与文件的目录结构一致
posted @ 2025-06-06 14:10  wsl-hitsz  阅读(60)  评论(0)    收藏  举报