2. 合并 map 到 struct 接下来我们看另一个场景:我们有一个 map,需要将其内容合并到一个已有的 struct 中。这种需求在动态配置加载时特别常见。 funcmapToStruct(){ varm =make(map[string]interface{})m["name"] ="Tom"m["age"] =23m["email"] ="12...
func structToMap(s interface{}) map[string]interface{} { result := make(map[string]interface{}) // 使用反射获取结构体字段信息 v := reflect.ValueOf(s) t := reflect.TypeOf(s) for i := 0; i < t.NumField(); i++ { // 将结构体字段名和值存储到Map中 result[t.Field(i).Name] ...
可以使用reflect包中的DeepEqual函数来比较struct和map [string] interface {}之间的数据。 示例代码: package main import ( "fmt" "reflect" ) func main() { // 定义struct type Person struct { Name string Age int } // 定义map m := map[string]interface{}{ "Name": "John", "Age": 20, }...
} func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj) var data = make(map[string]interface{}) for i := 0; i < t.NumField(); i++ { data[t.Field(i).Name] = v.Field(i).Interface() } return data } func main() ...
在有些场景下,我们需要用一个map[string]interface{}, map的key是struct中的一个tag的值, value是需要赋值的值,我们可以使用reflect包来进行操作。 我们需要struct的指针,只有指针我们才能在函数中改变struct的值 根据指针获取struct的实例,Type 依次遍历struct的域,取出域中的tag和map中的key进行比较,然后比较域的...
StructToJsonDemo() } AI代码助手复制代码 输出: 二、json和map互转 (1)json转map例子: funcJsonToMapDemo(){ jsonStr :=` { "name": "jqw", "age": 18 } `varmapResultmap[string]interface{} err := json.Unmarshal([]byte(jsonStr), &mapResult)iferr !=nil{ ...
先将map 转换成 JSON,再通过 JSON 转换成 struct 操作有点繁琐 func TestMapToStructByJson(t *testing.T) { beforeMap := map[string]interface {}{ "id":"123", "user_name":"酒窝猪", "address":[]map[string]interface{}{{"address": "address01"}, {"address": "address02"}}, } var af...
go语言包含但不限于int32,float32,chan,map,slice等内建类型,同时为了能让用户定义自己的类型,go语言为我们提供了struct和interface这两种好用的工具 结构体(Struct) 和C语言的struct相似,在go语言中,我们依然用struct来声明一个结构体比如: typegameObjectstruct{ ...
struct转map 使用json模块 直接使用json.Marshal方法来强制转化struct。 参考代码: funcJSONMethod(contentinterface{})map[string]interface{} {varnamemap[string]interface{}ifmarshalContent, err := json.Marshal(content); err !=nil{ fmt.Println(err) ...
packagemainimport("fmt""reflect")typeStudentstruct{Namestring`json:"name"`Ageuint`json:"age"`}typeTeacherstruct{Namestring`json:"name"`Genderuint`json:"gender"`}// StructSliceToMapSlice : struct切片转为map切片funcStructSliceToMapSlice(sourceinterface{}){// 判断,interface转为[]interface{}v:=ref...