[英]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.