[英]Dynamically set a struct field to a slice value using reflect
我有以下代码片段,经过一些反思后,它将结构的字段设置为字符串值
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)
我在reflect
package 中看不到任何SetSlice
方法。
当valueField
为[]string
类型时,如何执行上述操作?
Value.SetString()
是设置string
值的便捷方法。 由于显而易见的原因,所有类型都没有单独的方法,但是有一个“通用”的Value.Set()
方法,您可以使用它。 您只需从要设置的值中获取reflect.Value
:
var someSlice ...
valueField.Set(reflect.ValueOf(someSlice))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.