hello云胜

技术与生活

0%

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