当前位置: 首页 > article >正文

结构体标签与数据流向 笔记

一、什么是结构体标签Struct TagGo 里面结构体字段后面经常会跟一串奇怪的东西Nicknamestringjson:nickname gorm:column:nickname toml:nickname这个东西叫结构体标签Struct Tag它本质上是给框架看的“额外说明”告诉GinGormJSONinitoml这些框架这个字段该怎么映射二、结构体标签的本质你一定要理解Go 结构体字段名 和 外部数据名字 经常不一样例如Go 字段TitleJSONtitle数据库title配置文件title xxx所以需要标签来建立映射关系三、结构体标签本质是“翻译官”例如Titlestringjson:title意思JSON里的 title 对应 Go里的 Title四、三种最常见标签标签场景数据流向json前后端交互JSON ↔ Gogorm数据库映射Go ↔ MySQLtoml / ini配置文件配置文件 → Go五、json 标签前后端交互这是Gin 里面最最最常见的标签。示例typeUserstruct{Usernamestringjson:username}六、前端发送 JSON前端{username:zhangsan}七、Gin 接收数据varbody User c.ShouldBindJSON(body)八、这里到底发生了什么核心Gin会第一步读取 Body读取{username:zhangsan}第二步解析 JSON变成key-value第三步根据标签匹配看到Usernamestringjson:username于是JSON 的 username ↓ 对应 Go 的 Username第四步赋值最终body.Usernamezhangsan九、json 标签为什么是双向的很多新人以为json 标签只能接收数据其实返回 JSON 时也会用示例c.JSON(200,body)Gin会body.Username根据json:username转换成{username:zhangsan}十、所以 json 标签本质输入 JSON → Go 输出 Go → JSON所以是双向映射十一、完整 JSON 数据流重点前端 JSON { title:学Gin } ↓ c.ShouldBindJSON Go结构体 body.Title 学Gin ↓ c.JSON 返回 JSON { title:学Gin }十二、gorm 标签数据库映射gorm 标签负责Go结构体 ↔ 数据库表十三、示例typeTodostruct{IDuintgorm:primaryKeyTitlestringgorm:column:title}十四、gorm:“column:title”表示数据库列 title 对应 Go字段 Title十五、GORM Create 到底发生了什么db.Create(todo)GORM会第一步读取结构体todo.Title第二步看到gorm:column:title第三步生成 SQLINSERTINTOtodos(title)VALUES(学Gin)十六、GORM 查询过程db.First(todo,1)数据库返回title学GinGORM再根据gorm:column:title赋值todo.Title学Gin十七、所以 gorm 也是双向的Go → SQL SQL → Go十八、GORM 自动规则如果你不写标签GORM 默认结构体名Todo自动变todos字段名Title自动变title十九、primaryKey 是什么IDuintgorm:primaryKey表示主键二十、主键的三个特性1. 唯一不能重复。2. 不能为空每行必须有。3. 一张表只能一个主键二十一、GORM 里的主键默认自增例如IDuintgorm:primaryKey插入时不用手动赋值MySQL自动1 2 3 4增长。二十二、索引非常重要很多新人以为WHERE 才是查找其实索引决定查找快不快二十三、普通索引gorm:index作用查询更快 允许重复二十四、唯一索引gorm:uniqueIndex作用查询更快 不能重复例如用户名 手机号 邮箱二十五、为什么索引会快你可以理解成给数据贴目录标签没有索引全表扫描有索引直接定位二十六、软删除重点很多公司删除数据并不会DELETE而是标记已删除示例DeletedAt gorm.DeletedAt二十七、软删除底层GORM执行db.Delete(user)其实不是DELETE而是UPDATEusersSETdeleted_atNOW()二十八、为什么不用真删除因为真实项目数据可能需要恢复例如订单用户日志二十九、配置文件标签ini/toml例如typeMysqlConfigstruct{Hoststringtoml:host}三十、配置文件host 127.0.0.1三十一、读取过程toml.DecodeFile(config.toml,conf)框架会读取 toml ↓ 找到 host ↓ 赋值给 Host三十二、ini.MapTo 本质一样ini.MapTo(conf,config.ini)也是配置文件 ↓ 结构体三十三、配置文件为什么是单向因为一般只读配置 不写回配置文件所以配置文件 → Go通常是单向。三十四、完整数据流向最重要真正项目里数据会这样流动前端 → 后端JSON ↓ ShouldBindJSON ↓ Go结构体后端 → 数据库Go结构体 ↓ GORM ↓ MySQL配置文件 → 项目config.toml ↓ DecodeFile ↓ 结构体三十五、结构体为什么这么重要你会发现前端 数据库 配置文件最后都在围绕Go结构体转。所以结构体 是整个Go后端的数据中心三十六、最终核心图必须理解前端 JSON ↓ json 标签 ↓ Go结构体 ↓ gorm 标签 ↓ MySQL数据库以及config.toml ↓ toml标签 ↓ Go结构体三十七、最后总结结构体标签本质不同数据格式之间的映射规则最常见三种标签作用json前后端 JSON 映射gorm数据库字段映射toml/ini配置文件映射真正核心思想结构体是中间桥梁 标签负责建立映射整个 Go Web 开发几乎都围绕结构体 标签展开。

相关文章:

结构体标签与数据流向 笔记

一、什么是结构体标签(Struct Tag) Go 里面: 结构体字段后面经常会跟一串奇怪的东西: Nickname string json:"nickname" gorm:"column:nickname" toml:"nickname"这个东西: 叫&#xff…...

不花一分钱!用Spacedesk把旧平板变成Windows电脑的无线触控副屏

零成本改造旧平板:Spacedesk无线副屏全攻略家里积灰的旧平板终于有了用武之地。上周整理书房时,我发现抽屉里躺着三年前买的安卓平板,电池已经鼓包,但屏幕完好。正当我准备把它送进电子垃圾回收站时,突然想到&#xff…...

为你的AI应用配置Taotoken实现自动故障转移与路由

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为你的AI应用配置Taotoken实现自动故障转移与路由 在构建依赖大模型API的应用时,服务的稳定性直接关系到终端用户的体验…...

【数据分析】智慧城市温度与湿度分析系统【含Matlab源码 15555期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

【肾结石检测】图像处理技术检测超声图像中的肾结石【含Matlab源码 15553期】含报告

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

【稻米计数】形态学稻米计数【含Matlab源码 15562期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

Adobe-GenP 3.0:技术架构深度解析与自动化配置实践

Adobe-GenP 3.0:技术架构深度解析与自动化配置实践 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0作为一款开源工具,为Adobe…...

终极鸣潮优化指南:3分钟解锁120FPS与专业抽卡分析

终极鸣潮优化指南:3分钟解锁120FPS与专业抽卡分析 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否还在为《鸣潮》的60FPS帧率限制而烦恼?是否想科学分析自己的抽卡概率&#…...

如何在3分钟内将视频压缩90%?免费开源神器CompressO完全指南

如何在3分钟内将视频压缩90%?免费开源神器CompressO完全指南 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/compr…...

Java并发编程:ReentrantReadWriteLock读写锁

前言在Java并发编程中,锁机制是保证线程安全的重要手段。synchronized和ReentrantLock都是排他锁,同一时刻只允许一个线程访问共享资源。但在实际业务场景中,读操作往往远多于写操作,如果多个读线程之间也要互相等待,会…...

Windows电脑安装安卓应用终极指南:APK安装器完整教程

Windows电脑安装安卓应用终极指南:APK安装器完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上直接运行安卓应用&#x…...

Windows 10/11 上从零搞定 OpenCDA 自动驾驶仿真环境:CARLA 0.9.14 + PyTorch + SUMO 保姆级配置流程

Windows 10/11 上从零搞定 OpenCDA 自动驾驶仿真环境:CARLA 0.9.14 PyTorch SUMO 保姆级配置流程自动驾驶仿真技术正在成为行业研究和开发的重要工具。对于刚接触这一领域的开发者来说,搭建一个完整的仿真环境往往是第一个挑战。本文将带你一步步在Win…...

终极跨平台游戏资源管理器:VPKEdit完全指南

终极跨平台游戏资源管理器:VPKEdit完全指南 【免费下载链接】VPKEdit A CLI/GUI tool to create, read, and write several pack file formats. 项目地址: https://gitcode.com/gh_mirrors/vp/VPKEdit 你是否曾经为处理Source引擎游戏资源而烦恼?…...

CleanMyWechat:你的微信磁盘空间救星,三步告别几十GB的缓存困扰

CleanMyWechat:你的微信磁盘空间救星,三步告别几十GB的缓存困扰 【免费下载链接】CleanMyWechat 自动删除 PC 端微信缓存数据,包括从所有聊天中自动下载的大量文件、视频、图片等数据内容,解放你的空间。 项目地址: https://git…...

桌面实时股票监控终极指南:5分钟打造你的Windows投资助手

桌面实时股票监控终极指南:5分钟打造你的Windows投资助手 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 在当今快节奏的数字时代,投资者们常常需要在工作…...

Taotoken 的 API Key 分级管理与审计日志功能在安全合规中的实际价值

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken 的 API Key 分级管理与审计日志功能在安全合规中的实际价值 在企业级应用开发中,将大模型能力集成到业务系统…...

3分钟快速上手:终极免费音乐解锁工具,让加密音频重获自由

3分钟快速上手:终极免费音乐解锁工具,让加密音频重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项…...

可视化 React 水合(Hydration)问题

以下是 Next.js React 水合(Hydration)问题的 Mermaid 可视化,包含流程图(问题全景)和时序图(时间线视角),以及简要说明。1. 水合问题全景流程图 #mermaid-svg-tjAQ0VWDBl1ii9LA{fo…...

开源入门踩坑实录:新手必避的10个坑,每个都让我熬到凌晨三点

开源入门踩坑实录:新手必避的10个坑,每个都让我熬到凌晨三点“如果有人能在我入坑开源的第一周告诉我这些,我能少走三个月的弯路。”这是我作为一个普通开发者,从"连GitHub是什么都不知道"到成功给知名开源项目提交PR的…...

next.js 开发中的水合(Hydration)问题

Next.js 16.2 React 19 完全规避水合问题开发规范完整指南 一、水合问题的根本原因 水合错误(Hydration Mismatch)发生的唯一根本原因是:服务端渲染生成的 HTML 与客户端首次渲染生成的虚拟 DOM 结构不一致。 React 19 对水合错误的检测更加…...

天际模组编排师:用LOOT主列表告别游戏崩溃的智能解决方案

天际模组编排师:用LOOT主列表告别游戏崩溃的智能解决方案 【免费下载链接】skyrimse The TES V: Skyrim Special Edition masterlist. 项目地址: https://gitcode.com/gh_mirrors/sk/skyrimse 你是否曾因《上古卷轴V:天际 特别版》模组冲突而烦恼…...

Warcraft Helper终极指南:8大功能让魔兽争霸3在现代系统重获新生

Warcraft Helper终极指南:8大功能让魔兽争霸3在现代系统重获新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在Window…...

火狐浏览器配置Burp Suite抓包完全指南

1. 为什么火狐浏览器在Burp Suite里“抓不到包”?——不是工具不行,是链路断了很多人第一次用Burp Suite配火狐时,点开Proxy → Intercept is on,浏览器照常访问网站,但Burp的HTTP History里空空如也。刷新十次、重启三…...

Burp Suite小白挖洞实战:公益漏洞挖掘的最小可行闭环

1. 这不是“无脑”,而是把重复动作压缩成肌肉记忆“使用Burp Suite插件如何无脑挖的第一个公益漏洞(小白挖洞)”——这个标题里最危险的词,不是“Burp Suite”,也不是“公益漏洞”,而是“无脑”。我带过二十…...

长期使用Taotoken Token Plan套餐在项目开发中的成本节省体感

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken Token Plan套餐在项目开发中的成本节省体感 1. 项目背景与成本挑战 我们团队负责一个中型AI应用项目的开发&…...

App爬虫实战:突破SSL Pinning、动态签名与设备指纹的五层反爬

1. 这不是写个 requests 就能跑通的“爬虫”,而是一场持续数月的攻防拉锯战“App 父亲”这个词在移动互联网圈里没人真叫,但所有做过 App 数据采集的人心里都清楚——你面对的从来不是一串 API 接口,而是一个被精心加固、层层设防、会主动识别…...

百度网盘直链解析:5分钟实现全速下载的终极指南

百度网盘直链解析:5分钟实现全速下载的终极指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的非会员限速而烦恼吗?每次下载大文件都…...

对比直接使用厂商API,Taotoken在稳定性方面的补充价值

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API,Taotoken在稳定性方面的补充价值 在构建依赖大模型能力的应用时,开发者通常会直接调用…...

VSCode中R语言开发环境配置与使用完整教程

VSCode中R语言开发环境配置与使用完整教程 【免费下载链接】vscode-R R Extension for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-R 在数据科学和统计分析工作中,R语言开发者常常面临开发环境碎片化的问题:代码编辑…...

LSLib:游戏资源逆向工程的架构级解决方案

LSLib:游戏资源逆向工程的架构级解决方案 【免费下载链接】lslib Tools for manipulating Divinity Original Sin and Baldurs Gate 3 files 项目地址: https://gitcode.com/gh_mirrors/ls/lslib 面对《神界:原罪》和《博德之门3》等CRPG游戏复杂…...