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