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目录下的包外部是无法引用的,但是本项目下的代码是可以访问的。

相关推荐
superman超哥2 小时前
Rust 异步性能最佳实践:高并发场景的极致优化
开发语言·后端·rust·最佳实践·异步性能·高并发场景
未来之窗软件服务2 小时前
幽冥大陆(八十一)安检原理识别管制刀具原理go语言—东方仙盟练气期
开发语言·后端·golang·安检系统
BingoGo2 小时前
2026 年 PHP 开发者进阶 快速高效开发学习习惯
后端·php
TDengine (老段)2 小时前
TDengine GROUP BY 与 PARTITION BY 使用及区别深度分析
大数据·开发语言·数据库·物联网·时序数据库·tdengine·涛思数据
Object~2 小时前
2.变量声明
开发语言·前端·javascript
IT_陈寒2 小时前
Vite 3实战:我用这5个优化技巧让HMR构建速度提升了40%
前端·人工智能·后端
chian-ocean2 小时前
网络世界的“搬运工”:深入理解数据链路层
开发语言·网络·php
csdnZCjava2 小时前
Spring MVC工作原理 及注解说明
java·后端·spring·mvc
weixin_lynhgworld2 小时前
旧物回收小程序:让闲置物品焕发新生 ✨
java·开发语言·小程序