在着手开发一个Golang应用之前,先规划好项目的目录结构可以让后续编码、测试和部署都更顺畅。一个清晰的开发目录不仅方便自己维护,也利于他人参与协作。下面我们直接来看如何初始化一个典型的Golang项目基础结构。

使用go mod初始化项目
首先在项目根目录执行go mod init来创建模块,这会自动生成go.mod文件,作为依赖管理的入口。
# 假设项目名为myapp mkdir myapp cd myapp go mod init github.com/yourname/myapp
常见基础目录说明
一个通用的Golang项目基础结构通常包含以下目录,各自职责不同:
| 目录 | 用途 |
|---|---|
| cmd | 存放各可执行程序的main包,每个子目录对应一个二进制 |
| internal | 项目私有代码,外部模块不可导入 |
| pkg | 可供外部复用的公共库代码 |
| configs | 配置文件模板或默认配置 |
| scripts | 构建、部署等辅助脚本 |
创建目录结构示例
我们可以用几条命令快速建立基础骨架:
mkdir -p cmd/myapp internal pkg configs scripts touch cmd/myapp/main.go
编写入口文件
在cmd/myapp/main.go中写入一个简单的main函数验证结构可用性:
package main
import (
"fmt"
)
func main() {
// 临时打印,确认项目可运行
fmt.Println("myapp started")
}
internal与pkg的划分建议
把不希望被外部引用的业务逻辑放在internal目录下,Go编译器会强制限制外部模块导入它。可复用性强的工具或组件放在pkg中,方便跨项目引用。
基础结构模板参考
以下是一个简化但规范的目录树示例:
myapp/ ├── go.mod ├── cmd/ │ └── myapp/ │ └── main.go ├── internal/ │ └── service/ ├── pkg/ │ └── util/ ├── configs/ └── scripts/
小结
为Golang项目初始化开发目录并不复杂,核心是用go mod建立模块,并按职责拆分cmd、internal、pkg等目录。随着业务增长,你还可以加入api、web、test等目录,但基础结构稳定后扩展成本很低。