golang 结构体struct转map实践

这篇具有很好参考价值的文章主要介绍了golang 结构体struct转map实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

golang 结构体struct转map实践,golang,开发语言,后端

 

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]
 文章来源地址https://www.toymoban.com/news/detail-527434.html

到了这里,关于golang 结构体struct转map实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Golang】Golang进阶系列教程--为什么 Go 语言 struct 要使用 tags

    在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构。在 struct 中,我们可以定义多个字段,每个字段可以有不同的类型和名称。 除了这些基本信息之外,Go 还提供了 struct tags,它可以用来指定 struct 中每个字段的元信息。 在本文中,我们将探讨为什

    2024年02月15日
    浏览(80)
  • 【C语言】struct结构体

    具有相同或不同类型元素的集合叫做结构体。定义一个结构体,本质是在制作一个类型: 在C中,结构体内只能存放各种类型的变量,不能存函数: 像上面这样就是声明了一个结构体 struct Student ,此时的 struct Student 相当于一个类型名。 然后我们可以用这个自己声明的结构体

    2024年02月03日
    浏览(59)
  • Golang实践:用Sync.Map实现简易内存缓存系统

    定义了一个Cache结构体,其中使用sync.Map作为底层数据结构来存储缓存项。Set方法用于设置缓存项,指定键、值以及过期时间。Get方法用于获取缓存项,如果缓存项存在且未过期,则返回值和true,否则返回nil和false。方法的接受者为指针类型,是为了对Cache对象进行操作,并在

    2024年04月15日
    浏览(43)
  • 【go语言基础】结构体struct

    主要是敲代码,敲的过程中会慢慢体会。 结构体是用户定义的类型,表示若干字段的集合,目的是将数据整合在一起。 简单的说,类似Java中的实体类。存储某个实体属性的集合。 注意:结构体名字,结构体属性名的首字母大写代表其余的包可以访问该结构体,类似Java中的

    2024年02月13日
    浏览(60)
  • Go语言入门6(struct 结构体)

    ​结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员 type + 结构体名 + struct + {成员列表} ​⭐如果结构体成员名字是以大写字母开头的,那么该成员就是导出的。这是Go语言导出规则决 定的。一个结构体可能同时包含导出和

    2023年04月12日
    浏览(43)
  • golang map json 结构体

    要将JSON转换为Go结构体,您可以使用json.Unmarshal()函数。首先,您需要定义一个与JSON数据结构匹配的Go结构体,然后使用json.Unmarshal()将JSON数据解码为该结构体。 以下是一个示例: 假设有如下JSON数据: 您可以将其转换为Go结构体如下: 在上面的示例中,我们定义了一个名为

    2024年02月08日
    浏览(38)
  • 【C语言】学数据结构前必学的结构体struct详细

    佛祖说,他可以满足程序猿一个愿望。程序猿许愿有生之年写出一个没有bug的程序,然后他得到了永生。 目录 1、结构体的声明与定义 1.1结构体是什么? 1.2为什么要有结构? 1.3结构体的声明 1.4结构体成员类型 1.5结构体变量定义和初始化 2、结构体成员的访问 3、结构体传参

    2024年02月11日
    浏览(62)
  • 【Golang】Golang进阶系列教程--Go 语言 map 如何顺序读取?

    Go 语言中的 map 是一种非常强大的数据结构,它允许我们快速地存储和检索键值对。 然而,当我们遍历 map 时,会有一个有趣的现象,那就是输出的键值对顺序是不确定的。 先看一段代码示例: 当我们多执行几次这段代码时,就会发现,输出的顺序是不同的。 首先,Go 语言

    2024年02月14日
    浏览(69)
  • Go语言结构体struct详解,Go空结构体的这些妙用你知道吗?

    本文详解了Go语言结构体的各个知识点,最后介绍了空结构体的3种妙用。希望对你有帮助。 结构体,是一种自定义的数据类型,由多个数据类型组合而成。用于描述一类事物相关属性 。 定义方式 : 结构体和结构体指针,两者的实例化有所区别 提供多种写法,灵活使用:

    2024年02月01日
    浏览(47)
  • Golang学习之结构体和内存对齐、map设计思路

    cpu要想从内存读取数据,需要通过地址总线,把地址传输给内存,内存准备好数据,输出到数据总线,交给CPU。 如果地址总线只有8根,那这个地址就只有8位,可以表示256个地址,因为表示不了更多的地址就用不了更大的内存。 所以256就是8根地址总线最大的寻址空间,要使

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包