Gin 框架中的 Recovery 中间件:优雅处理 panic 的最佳实践

Gin 的 Recovery 中间件能拦住请求处理过程中的 panic,避免单次异常把整个服务拖垮。但它并不等于“错误处理已经完成”:中间件注册顺序、goroutine 场景、自定义响应、日志与监控接入,都会直接影响线上稳定性。本文从原理、用法到生产实践梳理一套可落地的处理思路。

Gin 框架中的 Recovery 中间件:优雅处理 panic 的最佳实践

Go 微服务框架怎么选:5 个主流方案的定位、差异与落地建议

Go 微服务框架不少,但选型并不只看“谁更火”。这篇文章把 Go Micro、Go Zero、Go Kit、Kratos、Kitex 放到同一套判断标准里,对比能力边界、学习成本、性能取向和适配场景,帮助团队更快筛出可落地方案。 Go 微服务框架越多,选型反而越容易陷入“功能都差不多、又怕选错”的局面。

Go 微服务框架怎么选:5 个主流方案的定位、差异与落地建议

Go 语言设计哲学:为什么说组合优于继承?

Go 没有沿用 Java、C++ 那套继承体系,而是把代码复用的重点放在组合、结构体嵌入和接口配合上。本文从继承的局限、Go 的实现方式到几个典型示例,梳理为什么“组合优于继承”不是口号,而是更贴近 Go 设计哲学的工程选择。

Go 语言设计哲学:为什么说组合优于继承?

Go 语言编码规范:还要像 Java 一样定义 Service、Dao 和 Controller 吗?

很多 Java 开发者转到 Go 后,仍会沿用 `xxxService.go`、`xxxDao.go`、`xxxController.go` 这类分层命名。问题不在于能不能这么写,而在于这会不会破坏 Go 一贯强调的简洁、领域组织和社区一致性。本文结合 Go 的命名约定与项目结构,说明哪些做法更地道、哪些拆分方式更适合长期维护。

Go 语言编码规范:还要像 Java 一样定义 Service、Dao 和 Controller 吗?