核心功能
Gin 提供 Martini 风格的 API,但借助定制版 httprouter 把性能提升到最多 40 倍,路由过程不产生堆分配。适合高吞吐 REST API、微服务,以及需要低响应延迟的 Go 后端服务。
功能亮点
基准数据可查
官方 GithubAll 基准中 27364 ns/op、0 次堆分配,明显优于 Beego、GorillaMux 等框架
gin.Default() 自带两件套
默认路由器已装好 logger 与 recovery 中间件,起步就有访问日志和崩溃兜底
gin.H 写 JSON 很省事
c.JSON(http.StatusOK, gin.H{...}) 一行返回结构化响应,不用先定义响应结构体
路由分组管公共逻辑
把同类接口归到一个 group,统一挂鉴权、限流等中间件,避免逐条路由重复注册
中间件生态成体系
官方 gin-contrib 提供 JWT、Session、CORS、限流、压缩、静态文件等现成组件
适用场景
• 高吞吐的 REST API 服务,需要在大量并发下保持低延迟
• 微服务后端,用中间件统一处理鉴权、日志与链路追踪
• 用最少样板代码快速搭起 Go Web 服务原型
安装配置
bash
前置条件:Go 1.25 或更高版本,且 go 命令在 PATH 中可用。 新建项目并初始化 Go module: mkdir gin-quickstart && cd gin-quickstart go mod init gin-quickstart 添加 Gin 依赖: go get -u github.com/gin-gonic/gin 在代码中导入即可(Go module 会在构建时自动拉取): import "github.com/gin-gonic/gin"
使用方法
go
新建 main.go:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
router.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
})
router.Run() // 默认监听 0.0.0.0:8080
}
运行服务:
go run main.go
访问 http://localhost:8080/ping ,会返回:
{"message":"pong"}关键指标
尚未核验对标产品,此处只列本工具自身指标,不做对比结论。
指标Gin
价格免费
开源是
上手难度进阶
相关工具
同类工具
优点
- 路由基于定制 httprouter,官方基准中做到 0 B/op、0 allocs/op 的零堆分配
- gin.Default() 默认挂载 logger 与 recovery,panic 不会导致进程崩溃
- 请求 JSON 绑定与校验、路由分组、集中错误管理都在框架内,少写一层胶水代码
- gorush、fnproject、photoprism、lura 等生产项目在用,中间件生态由 gin-contrib 维护
缺点
- 要求 Go 1.25 或以上,环境版本偏旧时需要先升级 Go 工具链
- 只解决 HTTP 层的问题,ORM、配置管理、依赖注入等都要自己选型拼装
- 上手前需要具备 Go 语法与 go module 依赖管理的基础