golang 结构体struct转map实践

news/2024/11/8 4:33:56/

 

1、反射
type sign struct {
    Name string `json:"name,omitempty"`
    Age  int    `json:"age,omitempty"`
}
 
var s sign
s.Name = "csdn"
s.Age = 18
 
 
//方式1 反射
var data = make(map[string]interface{})
 
t := reflect.TypeOf(s)
v := reflect.ValueOf(s)
for i := 0; i < t.NumField(); i++ {
    data[t.Field(i).Name] = v.Field(i).Interface()
}
fmt.Println(data)
结果:map[Age:18 Name:csdn]

2、通过structs库
首先进行structs库进行安装

go get github.com/fatih/structs
// 重点:添加structs 标签 

type sign struct {
    Name string `json:"name,omitempty" structs:"name"` // 重点:添加structs 标签
    Age  int    `json:"age,omitempty" structs:"age"`
}
 
var s sign
s.Name = "csdn"
s.Age = 18
 
 
// 方式2
data := structs.Map(s)
fmt.Println(data)
结果:map[age:18 name:csdn]

3、结构体转string 再通过string转map
type sign struct {
    Name string `json:"name,omitempty"`
    Age  int    `json:"age,omitempty"`
}
 
var s sign
s.Name = "csdn"
s.Age = 18
 
// 先把结构体转成json字符串
str, err := json.Marshal(s) // 返回 byte, err
if err != nil {
    return
}
// {"name":"csdn","age":18}
 
// 在转成map
var data = make(map[string]interface{})
if err := json.Unmarshal(str, &data); err != nil {
    return
}
fmt.Println(data)
 
结果:map[age:18 name:csdn]
 


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

相关文章

软件测试停止依据详解

目录 前言&#xff1a; 误区之一&#xff1a;测试输入数据设计方法等同于测试用例设计方法 误区之二&#xff1a;强调测试用例设计得越详细越好 误区之三&#xff1a;追求测试用例设计“一步到位” 误区之四&#xff1a;让测试新人设计测试用例 前言&#xff1a; 在软件测…

【数据结构与算法】将含有n个元素的整数数组A[0…n-1]的元素循环右移1≤m<n)位。要求算法的空间复杂度为O(1)。

题目&#xff1a; Qestion:  设计一个算法 , 将含有 n 个元素的整数数组 A [ 0 … n − 1 ] 的元素循环右移 ( 1 ≤ m < n ) 位。要求算法的空间复杂度为 O ( 1 ) 设计一个算法,将含有n个元素的整数数组A[0…n-1]的元素循环右移(1≤m<n)位。要求算法的空间复杂度为O(1) …

全球与中国N-乙基苯胺市场深度研究分析报告

2020年&#xff0c;全球N-乙基苯胺市场规模达到了 亿元&#xff0c;预计2027年将达到 亿元&#xff0c;年复合增长率(CAGR)为 %。 本报告研究全球与中国市场N-乙基苯胺的产能、产量、销量、销售额、价格及未来趋势。重点分析全球与中国市场的主要厂商产品特点、产品规格、价格、…

50V升压恒流LED驱动芯片

一些屏幕的背光芯片&#xff0c;有的需要50V/200mA左右&#xff0c;会用到升压芯片&#xff0c;下面介绍下BP1808 3V 到 60VDC 输入/输出范围 支持升压、降压、和升降压模式内置 70V/300mΩ 功率 MOSFET 3%输出电流精度 支持 PWM 调光及模拟调光420kHz 固定工作频率 效率可达9…

LED升压恒流_降压恒流_升压恒压_降压降压芯片大全可供工程师选型用!

LED升压恒流_降压恒流_升压恒压_降压降压芯片大全可供工程师选型用&#xff01; 降压恒流驱动芯片特色降压恒流驱动芯片升压恒流芯片LED背光IC低压输入高压输出降压恒压驱动芯片低压输入降压恒压芯片低压输入降压恒压芯片低压输入降压恒压芯片 LED驱动芯片 电源IC 车灯IC 驱动I…

安恒信息

安恒信息测试实习面试 小菜鸟在犹犹豫豫中开始了第一次面试&#xff0c;总觉得自己啥也不会&#xff0c;看到身边的同学都开始投了&#xff0c;那就来试试吧&#xff0c;反正总结经验嘛&#xff0c;接到面试电话那天是一个下午&#xff0c;在图书馆&#xff0c;我以为就简单的…

微信小程序页面跳转方式+跳转小程序

一. 跳转页面方法 官方文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab.html 跳转到 tabBar 页面&#xff0c;并关闭其他所有非 tabBar 页面 wx.switchTab({url: /index })跳转到其他页面&#xff08;非tabBar页&#xff09; //…

恒流电源与恒压电源在LED驱动应用上的分析。

最近在LED驱动上产品上发现有点问题&#xff0c;现在重新拿出来分析一下&#xff0c;便于以后开发。 自从LED灯珠产生到现在产能的提升&#xff0c;市场上的LED电源驱动需求大幅增加....... 本章只正对基本功能的LED驱动装置进行简单的原理说明以及应用场景分析&#xff0c;下…