Go 项目结构

186 阅读1分钟

典型结构

project
├── 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/
  • internal 目录下仅放置内部包可以导入的包。
  • vendor 目录,本地缓存包 实现reproducible builds 可重现构建、go build -mod=vendor 可实现基于vendor目录下包版本的构建。

    reproducible builds 可重现构建: 同一份源码在相同操作系统环境下 编译后得到相同的二进制文件。

  • cmd 目录放置main包的源文件,多个main包则要在不同目录 ,只有一个可执行程序时可省略,直接main.go放在一级目录
  • pkgN放置可被自身使用,且能被外部项目引用的包,与internal目录对照。
  • go modgo sum ,go 语言包依赖管理的配置文件,也是import 相对路径的 root ,go mod示例如下:
module helloworld

go 1.16