package main import ( "github.com/gin-gonic/gin" ) // 方式 2:独立函数(推荐,便于单元测试) func getProduct(c *gin.Context) { productID := c.Param("id") c.JSON(200, gin.H{ "id": productID, "name": "Product", }) } // 方式 3:结构体方法(便于依赖注入) type ProductService struct { name string } type ProductHandler struct { service *ProductService } func (h *ProductHandler) Get(c *gin.Context) { id := c.Param("id") // 使用 h.service 调用业务逻辑 c.JSON(200, gin.H{ "id": id, "service_name": h.service.name, }) } func main() { r := gin.Default() // 方式 1:直接定义 r.GET("/method1", func(c *gin.Context) { c.JSON(200, gin.H{"method": "inline"}) }) // 方式 2:使用独立函数 r.GET("/products/:id", getProduct) // 方式 3:使用结构体方法 service := &ProductService{name: "ProductService"} handler := &ProductHandler{service: service} r.GET("/products-struct/:id", handler.Get) r.Run(":9999") }