Mergo: merging Go structs and maps since 2013
译文:Mergo:自2013年起合并Go structs 和 maps
文档
安装
go get github.com/imdario/mergo
- 1
示例
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() }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
注意事项:
-
mergo 不会复制非导出字段
-
map 使用时候,对应的key字段默认是小写的
-
mergo 可以嵌套赋值
原文链接:pengshiyu.blog.csdn.net/article/details/127005428