通过反射创建这样的数据结构{"thing1":{"value":"咔咔618养车节"}, "thing2":{"value":"5月29号开启"}, "thing16":{"value":"人工洗车特惠提前购¥29.9元‼"}, "thing3":{"value":"更多车品优惠点击进入小程序抢购"}}
时间: 2023-08-22 13:06:23 浏览: 310
以下是通过反射创建该数据结构的示例代码(假设该数据结构对应的结构体名称为MyData):
```go
package main
import (
"fmt"
"reflect"
)
type MyData struct {
Thing1 struct{ Value string }
Thing2 struct{ Value string }
Thing16 struct{ Value string }
Thing3 struct{ Value string }
}
func main() {
data := make(map[string]interface{})
data["thing1"] = map[string]string{"value": "咔咔618养车节"}
data["thing2"] = map[string]string{"value": "5月29号开启"}
data["thing16"] = map[string]string{"value": "人工洗车特惠提前购¥29.9元‼"}
data["thing3"] = map[string]string{"value": "更多车品优惠点击进入小程序抢购"}
myData := reflect.New(reflect.TypeOf(MyData{})).Elem()
for k, v := range data {
field := myData.FieldByName(k)
if field.IsValid() {
if value, ok := v.(map[string]string); ok {
field.FieldByName("Value").SetString(value["value"])
}
}
}
fmt.Println(myData.Interface().(MyData))
}
```
在该示例代码中,我们首先创建了一个名为 data 的 map,其中包含了我们要创建的数据结构的各个字段的值。然后,我们使用反射创建一个空的 MyData 对象,并通过循环遍历 data 中的键值对,将对应的值设置到 MyData 对象的相应字段中。最后,我们通过将 MyData 对象转换为其实际类型,即可得到最终的数据结构。
阅读全文