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


相关文章
|
2月前
|
Go
Golang语言之映射(map)快速入门篇
这篇文章是关于Go语言中映射(map)的快速入门教程,涵盖了map的定义、创建方式、基本操作如增删改查、遍历、嵌套map的使用以及相关练习题。
36 5
|
2月前
|
Go
Golang语言结构体(struct)面向对象编程进阶篇(封装,继承和多态)
这篇文章是关于Go语言中结构体(struct)面向对象编程进阶篇的教程,涵盖了Go语言如何实现封装、继承和多态,以及结构体内存布局的相关概念和案例。
122 4
|
2月前
|
Go
Golang语言结构体(struct)面向对象编程基础篇
这篇文章是关于Go语言中结构体(struct)面向对象编程的基础教程,详细介绍了面向对象编程在Go语言中的应用、结构体的定义与初始化、方法定义、跨包实例化结构体以及结构体方法和普通函数的区别。
30 4
|
2月前
|
Unix Go
Golang语言标准库time之日期和时间相关函数
这篇文章是关于Go语言日期和时间处理的文章,介绍了如何使用Go标准库中的time包来处理日期和时间。
42 3
|
3月前
|
JSON Go API
一文搞懂 Golang 高性能日志库 - Zap
一文搞懂 Golang 高性能日志库 - Zap
161 2
|
3月前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
|
3月前
|
存储 JSON Go
一文搞懂 Golang 高性能日志库 Zerolog
一文搞懂 Golang 高性能日志库 Zerolog
257 0
|
3月前
|
JSON Go 数据格式
[golang]标准库-json
[golang]标准库-json
|
4月前
|
存储 C++ 索引
C++基础知识(八:STL标准库 Map和multimap )
C++ 标准模板库(STL)中的 map 容器是一种非常有用的关联容器,用于存储键值对(key-value pairs)。在 map 中,每个元素都由一个键和一个值组成,其中键是唯一的,而值则可以重复。
|
5月前
|
SQL NoSQL Go
技术经验分享:Golang标准库:errors包应用
技术经验分享:Golang标准库:errors包应用
40 0