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

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


                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当is 类型时如何执行上述操作[]string?


慕标5832272
浏览 111回答 1
1回答

MYYA

Value.SetString()string是一种设置值的便捷方法。由于显而易见的原因,所有类型都没有单独的方法,但是有一个“通用”Value.Set()方法,您可以使用它。您只需reflect.Value从要设置的值中获取 a :var someSlice ... valueField.Set(reflect.ValueOf(someSlice))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go