1.golang项目结构

1.二进制可执行项目的结构

bash 复制代码
tree .                                                             [14:52:58]
.
├── cmd
│   ├── app1
│   │   └── main.go
│   └── app2
│       └── main.go
├── go.mod
└── pkg
    ├── lib1
    │   └── lib1.go
    └── lib2
        └── lib2.go

7 directories, 5 files

1.cmd目录

用来存放可执行程序的main文件,即用go build指定的文件,如果有多个可执行文件的话细分为多个app文件,存放多个可执行文件,例如app1中的main是一个client程序,app2中的main是一个server程序。

2.pkg目录

用来存放项目依赖的一些包,比如cmd中的main需要依赖的代码包,需要注意的是该目录下的代码也可以被外部引用,是项目导出包的一个集合。

2.库项目的结构

库项目的作用是对外提供使用,所以不需要存放二进制main文件的cmd目录,去掉cmd目录即可。

3.internal目录

如果有些包不想被外部引用到,可以将想隐藏的包放在项目根目录下的internal目录中,internal目录下的包外部是无法引用的,但是本项目下的代码是可以访问的。

相关推荐
葫芦和十三3 小时前
图解 MongoDB 19|Oplog:复制的真正载体,不是文档是操作
后端·mongodb·agent
葫芦和十三3 小时前
图解 MongoDB 20|复制延迟与 catch up:Secondary 为什么跟不上
后端·mongodb·agent
IT_陈寒8 小时前
SpringBoot自动配置的坑,我的API突然就404了
前端·人工智能·后端
ServBay8 小时前
为什么说 MCP 是 2026 年开发者必须掌握的黄金协议?
后端·mcp
程序员夏洛9 小时前
Spring Boot 多模块项目中 IDEA 提示 Cannot resolve symbol 的一次排查记录
后端
子兮曰9 小时前
OpenMontage 深度解剖:你的 AI 编程助手,其实是个视频工作室
前端·后端·ai编程
子兮曰9 小时前
前端工具链的「Rust 化」:一场没有赢家的军备竞赛?
前端·后端·rust
爱勇宝10 小时前
从 Ctrl+CV 到 Enter:程序员正在失去什么
前端·后端·程序员
码事漫谈10 小时前
EdgeOne Makers + WorkBuddy:零基础也能快速搭建可上线的 AI 智能体(附图文教程)
后端