您当前的位置: 首页 >  golang

彭世瑜

暂无认证

  • 3浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Golang:Mergo一个struct、map合并库

彭世瑜 发布时间:2022-09-23 10:10:50 ,浏览量:3

Mergo: merging Go structs and maps since 2013

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

文档

  • pkg.go https://pkg.go.dev/github.com/imdario/mergo
  • github https://github.com/imdario/mergo

安装

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

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.0570s