我有以下代码段,经过一番反思,它将结构的字段设置为字符串值
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
时,如何执行上述操作?
答案 0 :(得分:1)
Value.SetString()
是用于设置string
值的便捷方法。出于显而易见的原因,没有用于 all 类型的单独方法,但是有一种“通用” Value.Set()
方法,您可以使用。您只需要从要设置的值中获取一个reflect.Value
:
var someSlice ...
valueField.Set(reflect.ValueOf(someSlice))