使用反射动态将结构字段设置为切片值

时间:2020-08-06 13:25:10

标签: go struct reflection

我有以下代码段,经过一番反思,它将结构的字段设置为字符串值

                switch fType := v.(type) {
                case MyCompositeFlagString:
                    s, ok := userInput.(string)
                    if !ok {
                        log.Printf("Erroneous input type:%T and input value: %v\n", userInput, userInput)
                        return ErrUnexpectedInput
                    }
                    valueField := values.Elem().Field(i).FieldByName("MyFlagString").FieldByName("Value")
                    valueField.SetString(s)

SetSlice程序包中看不到任何reflect方法。

valueField类型为[]string时,如何执行上述操作?

1 个答案:

答案 0 :(得分:1)

Value.SetString()是用于设置string值的便捷方法。出于显而易见的原因,没有用于 all 类型的单独方法,但是有一种“通用” Value.Set()方法,您可以使用。您只需要从要设置的值中获取一个reflect.Value

var someSlice ...
valueField.Set(reflect.ValueOf(someSlice))