Golang:Mergo一个struct、map合并库

简介: Golang:Mergo一个struct、map合并库

Mergo: merging Go structs and maps since 2013

译文:Mergo:自2013年起合并Go structs 和 maps

文档

安装

go get github.com/imdario/mergo

示例

package main
import (
    "fmt"
    "github.com/imdario/mergo"
)
type Student struct {
    Name string
    Age  int
    // 小写的
    email string
}
// struct 转 map
func structToMap() {
    student := Student{
        Name:  "Tom",
        Age:   23,
        email: "123@qq.com",
    }
    var m = make(map[string]interface{})
    mergo.Map(&m, student)
    fmt.Printf("m: %v\n", m)
    // m: map[age:23 name:Tom]
}
// map 转 struct
func mapToStruct() {
    var m = make(map[string]interface{})
    m["name"] = "Tom"
    m["age"] = 23
    m["email"] = "123@qq.com"
    student := Student{}
    mergo.Map(&student, m)
    fmt.Printf("student: %v\n", student)
    // student: {Tom 23 }
}
func main() {
    structToMap()
    mapToStruct()
}

注意事项:

  • mergo 不会复制非导出字段
  • map 使用时候,对应的key字段默认是小写的
  • mergo 可以嵌套赋值

参考

好用的map-struct转换库 mergo


目录
打赏
0
0
0
0
82
分享
相关文章
|
7天前
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
47 26
|
2月前
|
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持
75 3
Golang 实现轻量、快速的基于 Reactor 模式的非阻塞 TCP 网络库
gev 是一个基于 epoll 和 kqueue 实现的高性能事件循环库,适用于 Linux 和 macOS(Windows 暂不支持)。它支持多核多线程、动态扩容的 Ring Buffer 读写缓冲区、异步读写和 SO_REUSEPORT 端口重用。gev 使用少量 goroutine,监听连接并处理读写事件。性能测试显示其在不同配置下表现优异。安装命令:`go get -u github.com/Allenxuxu/gev`。
|
6月前
|
go-carbon v2.5.0 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持。
157 4
go库介绍:Golang中的Viper库
Viper 是 Golang 中的一个强大配置管理库,支持环境变量、命令行参数、远程配置等多种配置来源。本文详细介绍了 Viper 的核心特点、应用场景及使用方法,并通过示例展示了其强大功能。无论是简单的 CLI 工具还是复杂的分布式系统,Viper 都能提供优雅的配置管理方案。
160 6
|
8月前
|
Go
Golang语言之映射(map)快速入门篇
这篇文章是关于Go语言中映射(map)的快速入门教程,涵盖了map的定义、创建方式、基本操作如增删改查、遍历、嵌套map的使用以及相关练习题。
81 5
|
8月前
|
Go
Golang语言结构体(struct)面向对象编程进阶篇(封装,继承和多态)
这篇文章是关于Go语言中结构体(struct)面向对象编程进阶篇的教程,涵盖了Go语言如何实现封装、继承和多态,以及结构体内存布局的相关概念和案例。
285 4
|
8月前
|
Go
Golang语言结构体(struct)面向对象编程基础篇
这篇文章是关于Go语言中结构体(struct)面向对象编程的基础教程,详细介绍了面向对象编程在Go语言中的应用、结构体的定义与初始化、方法定义、跨包实例化结构体以及结构体方法和普通函数的区别。
94 4
|
8月前
|
Golang语言标准库time之日期和时间相关函数
这篇文章是关于Go语言日期和时间处理的文章,介绍了如何使用Go标准库中的time包来处理日期和时间。
214 3
|
8月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
262 4
Golang语言之管道channel快速入门篇
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等