第十二:josn 传递参数 shouldBindJSON 和结构体的 db字段

news/2025/3/28 11:00:12/

链接: Golang教程三(结构体、自定义数据类型,接口)_golang 自定义数据类型-CSDN博客

结构体指向 json 和数据库的 db

type User struct {
    ID   int    `json:"id" db:"user_id"`
    Name string `json:"name" db:"user_name"`
}

// db:"id" 表示 ID 字段对应数据库中的 "id" 字段。
// sql:",notnull" 指定 Name 字段在数据库中不允许为 NULL。

type User struct {
    ID   int    `db:"id"`
    Name string `sql:",notnull"`
}

// json:"id" 指定了在JSON中,ID 字段映射为 "id";
// json:"name,omitempty" 表示在序列化时,如果 Name 字段值为空,则不包含该字段;

type User struct {
    ID   int    `json:"id"`
    Name string `json:"name,omitempty"`
}

package mainimport ("fmt""reflect"
)type User struct {ID   int    `json:"id" db:"user_id"`Name string `json:"name" db:"user_name"`
}func main() {// 创建一个User实例u := User{ID: 1, Name: "Alice"}// 获取User类型反射值userValue := reflect.ValueOf(u)userType := userValue.Type()// 遍历User的字段for i := 0; i < userType.NumField(); i++ {field := userType.Field(i)// 获取字段名fieldName := field.Namefmt.Printf("Field Name: %s\n", fieldName)// 获取字段标签(假设我们关心的是json和db标签)jsonTag := field.Tag.Get("json")dbTag := field.Tag.Get("db")fmt.Printf("json Tag: %s\n", jsonTag)fmt.Printf("db Tag: %s\n", dbTag)// 输出标签值或默认值(如果不存在)if jsonTag != "" {fmt.Printf("JSON mapping: %s -> %s\n", fieldName, jsonTag)} else {fmt.Printf("No JSON tag for field %s\n", fieldName)}if dbTag != "" {fmt.Printf("DB mapping: %s -> %s\n", fieldName, dbTag)} else {fmt.Printf("No DB tag for field %s\n", fieldName)}fmt.Println()}
}


http://www.ppmy.cn/news/1583010.html

相关文章

Android Compose 框架副作用管理(SideEffect、EffectScope)深入剖析(十八)

Android Compose 框架副作用管理&#xff08;SideEffect、EffectScope&#xff09;深入剖析 一、引言 在现代 Android 开发中&#xff0c;Android Compose 作为一种声明式的 UI 构建方式&#xff0c;为开发者带来了全新的开发体验。它通过简洁的代码和高效的性能&#xff0c;…

mac anaconda3遇到无法创建python2.7版本虚拟环境

在Mac M4电脑上安装了Anaconda3之后,想通过conda创建python2.7的时候遇到错误: conda create -n python27 python=2.7(base) yuxuandong@dongyuxuandeMacBook-Air-2 ~ % conda create -n python27 python=2.7 Channels:- defaults- https://repo.anaconda.com/pkgs/main-

2025前端面试题记录

vue项目目录的执行顺序是怎么样的&#xff1f; 1、package.json   在执行npm run dev时&#xff0c;会在当前目录寻找package.json文件&#xff0c;此文件包含了项目的名称版本、项目依赖等相关信息。 2、webpack.config.js(会被vue-cli脚手架隐藏) 3、vue.config.js   对…

(UI自动化测试web端)第二篇:元素定位的方法_xpath路径定位

看代码里的【driver.find_element_by_xpath( )】( )里的表达式怎么写&#xff1f; 文章介绍了第一种写法&#xff1a;xpath路径定位&#xff08;相对路径、绝对路径&#xff09;。 1、第一种xpath路径定位&#xff0c;分为&#xff1a;相对路径和绝对路径两种写法。 1)绝对路径…

Oracle 外键/引用完整性(Foreign Key / Referential Integrity Constraints)

在数据模型中&#xff0c;当两个表存在"父子"关系时&#xff0c;即可以定义外键约束&#xff0c;这种关系限制一个表中的数据需要参考另一个表中已存在的数据&#xff0c;其中引用的表称为"子表"&#xff0c;被引用的表称为"父表"&#xff0c;引…

高防ip和高防服务器的区别?

高防ip和高防服务器的区别&#xff1f; 高防ip一般是服务商推出的ddos防御增值服务&#xff0c;可以在原有服务器上部署ddos防御服务&#xff1b;高防服务器是具有防御性能的服务器&#xff0c;可抵挡多类攻击。 高防IP没有像服务器那样的桌面控制 远程登录一些操作&#xff0c…

机器学习之KMeans算法

文章目录 引言1. KMeans算法简介2. KMeans算法的数学原理3. KMeans算法的步骤3.1 初始化簇中心3.2 分配数据点3.3 更新簇中心3.4 停止条件 4. KMeans算法的优缺点4.1 优点4.2 缺点 5. KMeans算法的应用场景5.1 图像分割5.2 市场细分5.3 文档聚类5.4 异常检测 6. Python实现KMea…

源代码防泄密和安全上外网的关联

在数字化办公的时代&#xff0c;企业员工需要频繁访问互联网以获取信息、进行沟通和协作。然而&#xff0c;互联网的开放性也带来了诸多安全风险&#xff0c;如恶意软件、网络攻击、数据泄露等。SPN沙盒作为一种先进的安全上网解决方案&#xff0c;为企业提供了一种安全、可控的…