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