Golang项目如何合理规划文件夹结构
Golang项目如何合理规划文件夹结构
如何组织我的文件夹,以便我的Go工作区go能与我克隆的仓库Go中的git集成?

2 回复
我的做法是创建一个名为 Projects 的文件夹,然后把所有项目都放在里面,无论它们使用什么技术。
更多关于Golang项目如何合理规划文件夹结构的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go项目中合理规划文件夹结构,关键在于遵循Go的工作区约定,同时与Git仓库无缝集成。以下是一个典型的项目结构示例,它同时满足Go模块管理和Git版本控制的需求:
// 项目根目录(对应Git仓库根目录)
myproject/
├── go.mod // Go模块定义文件
├── go.sum // 依赖校验文件
├── cmd/ // 可执行程序入口
│ ├── app1/
│ │ └── main.go
│ └── app2/
│ └── main.go
├── internal/ // 内部包(仅本项目可访问)
│ ├── config/
│ │ └── config.go
│ └── utils/
│ └── helpers.go
├── pkg/ // 公共库包(可被外部导入)
│ ├── api/
│ │ └── client.go
│ └── models/
│ └── user.go
├── api/ // API定义(如OpenAPI/Swagger)
│ └── swagger.yaml
├── web/ // Web资源
│ ├── static/
│ └── templates/
├── scripts/ // 构建/部署脚本
├── test/ // 测试数据或集成测试
├── docs/ // 文档
└── .git/ // Git仓库目录(自动生成)
关键配置说明:
- 初始化Go模块(在项目根目录执行):
go mod init github.com/yourusername/myproject
- go.mod文件内容示例:
module github.com/yourusername/myproject
go 1.21
require (
github.com/lib/pq v1.10.9
golang.org/x/sync v0.3.0
)
- 内部包导入示例(cmd/app1/main.go):
package main
import (
"fmt"
"github.com/yourusername/myproject/internal/config"
"github.com/yourusername/myproject/pkg/models"
)
func main() {
cfg := config.Load()
user := models.User{Name: "John"}
fmt.Printf("Config: %v, User: %v\n", cfg, user)
}
- Git集成:
- 确保
.gitignore包含:
# Go
go.sum
*.exe
*.test
*.prof
# 依赖目录
vendor/
这种结构遵循Go官方推荐的"标准Go项目布局"模式,同时保持与Git仓库的完全兼容。每个目录都有明确的职责划分,便于团队协作和代码维护。

