Go项目的典型结构布局
可执行程序项目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $tree -F exe-layout exe-layout ├── cmd/ │ ├── app1/ │ │ └── main.go │ └── app2/ │ └── main.go ├── go.mod ├── go.sum ├── internal/ │ ├── pkga/ │ │ └── pkg_a.go │ └── pkgb/ │ └── pkg_b.go ├── pkg1/ │ └── pkg1.go ├── pkg2/ │ └── pkg2.go └── vendor
|
cmd 目录就是存放项目要编译构建的可执行 文件对应的 main 包的源文件。如果有多个,再分包。
internal目录下是程序内部可以引用的
pka目录是存放外部项目可以引用的包
vendor目录 用于在项目本地缓存特定 版本依赖包
库项目
仅对外暴露go包,Go 库项目的初衷是为了对外部(开源或组织内部公开)暴露 API
1 2 3 4 5 6 7 8 9 10 11 12 13
| $tree -F lib-layout lib-layout ├── go.mod ├── internal/ │ ├── pkga/ │ │ └── pkg_a.go │ └── pkgb/ │ └── pkg_b.go |── pkg1/ │ └── pkg1.go └── pkg2/ └── pkg2.go
|