公司级Golang项目模板需构建可复用、易维护、符合工程规范的骨架结构,涵盖分层+领域驱动目录(cmd/internal/pkg/api/configs/scripts)、日志/配置/依赖注入/错误处理/健康检查等基础能力、标准化Makefile/.golangci.yml/Dockerfile及配套文档与初始化脚本。

初始化一个公司级 Golang 项目模板,核心是建立可复用、易维护、符合工程规范的骨架结构,而不是从零写代码。重点在于统一目录约定、集成基础工具链、预置关键配置和标准化构建流程。
定义清晰的目录结构
公司级项目需兼顾可读性与扩展性,推荐采用分层+领域驱动的混合结构:
-
cmd/:每个子目录对应一个可执行程序(如
cmd/api、cmd/job),main.go 在此,不放业务逻辑 -
internal/:存放仅本项目使用的私有包,按功能或领域划分(如
internal/user、internal/order) -
pkg/:封装可被外部引用的通用能力(如
pkg/logger、pkg/httpx),接口稳定、无业务耦合 - api/:定义 gRPC/HTTP 接口协议(.proto 或 OpenAPI spec),配合生成工具自动产出代码
- configs/:配置文件模板(YAML/JSON)及加载器,支持环境变量覆盖
- scripts/:常用脚本(如本地启服务、跑测试、生成代码、一键部署)
集成基础工程能力
开箱即用的关键能力应提前内置,避免每个项目重复造轮子:
- 日志:封装
zap,提供带 trace_id、service_name 的 logger 实例 - 配置:用
spf13/viper支持多格式、多环境、热重载(可选) - 依赖注入:选用
uber-go/fx或轻量google/wire,避免全局变量和手动传参 - 错误处理:统一错误码体系 + 可序列化 error wrapper(如
pkg/errx) - 健康检查 & 指标:预埋 /healthz /metrics 路由,集成
prometheus/client_golang
预置标准化构建与协作脚本
降低新人上手门槛,保障 CI/CD 流程一致:
立即学习“go语言免费学习笔记(深入)”;
-
Makefile提供常用命令:make dev(启动开发服务)、make test(单元+集成)、make lint(golangci-lint)、make gen(protobuf/go-swagger 代码生成) -
.golangci.yml固化公司代码规范(禁用 panic、强制 error check、要求 go doc 等) -
.gitignore排除/bin、/dist、go.sum(若使用 vendor)等非源码内容 -
Dockerfile使用多阶段构建,基础镜像限定为公司私有 registry 中的 alpine/golang 镜像
配套文档与初始化引导
模板的价值最终体现在“是否能快速启动一个新服务”:
- 根目录下
README.md包含:项目定位、快速开始(5 行命令起服务)、目录说明、配置方式、本地调试技巧 - 提供
init.sh或setup.go脚本:自动替换模板占位符(如 PROJECT_NAME、COMPANY_NAME),生成新项目名并清理无关文件 - 在 GitHub/GitLab 模板仓库中启用 “Use this template”,让新建项目时直接 fork 出干净初始态
基本上就这些。不复杂但容易忽略的是持续维护——模板不是建完就扔,要定期同步 Go 版本、升级依赖、收集团队反馈迭代结构。建议每季度做一次轻量 review,确保它始终是“大家愿意用、用得顺”的起点。










