Skip to content
Go
Gin
安装与快速开始

安装与快速开始

Gin 是一个用 Go 编写的高性能 HTTP Web 框架。它提供了类似 Martini 的 API,但得益于 httprouter,性能快达 40 倍。Gin 专为构建 REST API、Web 应用和微服务而设计。

官网文档:Gin Web Framework


前置条件

  • Go 版本:Gin 需要 Go 1.25 或更高版本
  • Go Modules:推荐使用 Go Modules 管理依赖

安装

go get github.com/gin-gonic/gin

第一个程序

package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func main() {
    // 创建带有默认中间件(Logger + Recovery)的路由器
    r := gin.Default()

    // 定义 GET /ping 端点
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "pong",
        })
    })

    // 默认监听 0.0.0.0:8080
    r.Run()
}
go run main.go

访问 http://localhost:8080/ping,返回 {"message":"pong"} 即成功。


Gin 模式

Gin 有三种运行模式,通过 GIN_MODE 环境变量或代码设置:

模式 说明 适用场景
debug 默认模式。输出详细的调试日志和路由信息 本地开发
release 生产模式。关闭调试输出,优化性能 生产环境
test 测试模式。抑制日志输出 单元测试
// 代码中设置模式
gin.SetMode(gin.ReleaseMode)
gin.SetMode(gin.TestMode)
gin.SetMode(gin.DebugMode)

// 检查当前模式
if gin.Mode() == gin.ReleaseMode {
    // 生产环境逻辑
}
# 环境变量设置
export GIN_MODE=release

💡 最佳实践:生产环境务必使用 release 模式,可减少不必要的内存分配和日志开销。


gin.Default() vs gin.New()

方法 Logger Recovery 适用场景
gin.Default() ✅ 内置 ✅ 内置 快速开发,标准应用
gin.New() ❌ 无 ❌ 无 自定义中间件栈
// 空白引擎:完全掌控中间件
r := gin.New()
r.Use(gin.Logger())     // 手动添加 Logger
r.Use(gin.Recovery())   // 手动添加 Recovery

💡 当你需要自定义日志格式或使用第三方日志库(slog、zerolog)时,使用 gin.New() 获得完全控制权。


基本项目结构推荐

project/
├── main.go           // 入口:组装路由、启动服务器
├── router/
│   └── router.go     // 路由注册
├── handler/          // 处理函数(按业务模块划分)
├── middleware/       // 自定义中间件
├── model/           // 数据模型 & 绑定结构体
├── config/
│   └── config.go     // 配置管理
└── go.mod

💡 小型项目可以从单个 main.go 开始;中型以上建议按此结构分层,保持关注点分离。