``` package main import ( "fmt" ) type RedisGroupInfo struct { Name string `json:"name"` Img string `json:"img"` N int `json:"n"` } func main() { var newInfo RedisGroupInfo //needUpdate := RedisGroupInfo{Name: "hello"} needUpdate := map[string]interface{}{ "Name": "hello", } /* mutable := reflect.ValueOf(&needUpdate).Elem() mutable.FieldByName("N").SetInt(7) f1 := reflect.TypeOf(&needUpdate).Elem() fmt.Println(f1) v := reflect.ValueOf(needUpdate) count := v.NumField() for i := 0; i < count; i++ { f := v.Field(i) switch f.Kind() { case reflect.String: fmt.Println(f) fmt.Println(f.String()) case reflect.Int: fmt.Println(f) fmt.Println(f.Int()) } } */ for k, value := range needUpdate { if k == "Name" { newInfo.Name = value.(string) } else if k == "Img" { newInfo.Img = value.(string) } } fmt.Println(newInfo) } ``` 想实现的目的是: 根据needUpdate这个入参,更新里面newInfo里面的数据.比如 ``` needUpdate := map[string]interface{}{ "Name": "hello", } ``` ,则更新Name字段为hello. 只要可以实现,入参needUpdate,可以接受是map[string]interface{}类型或者是RedisGroupInfo数据类型. 注释掉的代码,可以获取value,但是获取不了key,要是可以获取key,应该就可以用这个实现我的目的了. ``` "N"就是我说的key. mutable := reflect.ValueOf(&needUpdate).Elem() mutable.FieldByName("N").SetInt(7) ``` 谢谢了.