很多 Go 项目一开始就照着大仓库建 cmdinternalpkg,最后目录很整齐,代码却不知道该放哪。我的经验是:目录结构应该服务边界,而不是服务仪式感。

cmd 适合放入口,入口只做配置加载、依赖组装和启动服务;internal 适合放业务不可被外部复用的代码;pkg 只有在确实要给别的项目 import 时才值得出现。

cmd/api/main.go
internal/order/service.go
internal/order/repository.go
internal/platform/mysql.go

如果一个函数只被当前业务调用,先放在 internal。过早放进 pkg 会暗示它是稳定 API,后面每次改签名都要考虑外部依赖。

小项目可以先保持三层以内:入口、业务、基础设施。等边界真的变清楚,再拆包,成本更低。

分类: Go 语言笔记 标签: Go 工程实践 项目结构

评论

-- 评论已关闭 --

全部评论