Gin 核心概念速记

1. c *gin.Context 是什么

Gin 为每个请求创建的临时管家/工具箱,用于处理请求和返回响应。

go 复制代码
func CreateTodo(c *gin.Context) {
    // c 是 Gin 自动传给你的 Context
}

2. 四种获取数据方式

方法 数据来源 URL 示例
c.Param("id") URL 路径 :id /users/5
c.Query("name") URL 查询 ?name= /search?name=zhangsan
c.ShouldBindJSON(&body) 请求体 Body 不在 URL 里
c.GetHeader("Authorization") 请求头 Header 不在 URL 里

3. 结构体标签 json:"title"

双向翻译官:

go 复制代码
type Todo struct {
    Title string `json:"title"`
}
方向 过程
输入 JSON "title" → 装入 Go 的 Title
输出 Go 的 Title → 转成 JSON "title"

4. Body 是什么

HTTP 请求的"身体",用来装数据,不在 URL 里。

bash 复制代码
curl ... -d '{"title":"学Gin"}'
go 复制代码
var body struct {
    Title string `json:"title"`
}
c.BindJSON(&body)  // 把 Body 装进结构体
// body.Title = "学Gin"

5. 函数签名标准格式

go 复制代码
func 函数名(参数名 参数类型) 返回值类型 {
    // 函数体
}

// 示例
func Register(c *gin.Context) { ... }        // 无返回值
func Init(file string) error { ... }         // 有返回值
func Add(a int, b int) int { return a + b }  // 有参数有返回值

6. 库函数来源

函数 来源
c.Query(), c.JSON() Gin 框架 (*gin.Context 方法)
db.Create(), db.Find() GORM 框架
ini.MapTo() go-ini 库
fmt.Println() Go 标准库

7. ini.MapTo 配置加载

go 复制代码
ini.MapTo(Conf, file)
// 第一个参数:目标结构体(被填入)
// 第二个参数:配置文件(提供数据)
// 根据 `ini:"..."` 标签自动对应

8. new 和全局变量

go 复制代码
var Conf = new(AppConfig)
  • new:分配内存并返回指针
  • var 在函数外:全局变量,整个包共享
  • 传指针 → 改原本,传值 → 改副本

9. GORM v1 vs v2

功能 v1 v2
导入 github.com/jinzhu/gorm gorm.io/gorm
连接 gorm.Open("mysql", dsn) gorm.Open(mysql.Open(dsn), &gorm.Config{})
Ping DB.DB().Ping() 直接 return nil 或 sqlDB.Ping()

10. CRUD 速查

操作 HTTP 方法 GORM 方法
增 POST db.Create(&x)
查 GET db.Find(&xs) / db.First(&x, id)
改 PUT db.Save(&x)
删 DELETE db.Delete(&x, id)
相关推荐
wdfk_prog7 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模7 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡7 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影7 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
码事漫谈7 小时前
五道题,测测你有没有真的入门 AI
后端
蜗牛互联网7 小时前
Python + JSON Schema 实现工单结构化输出与本地复核
java·人工智能·后端
天天喝旺仔8 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
liulilittle8 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen8 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust
数据库小学妹8 小时前
存算分离到底分离了什么?四条架构变化与选型判断
数据库·数据库架构·云原生数据库·缓存一致性·存算分离