繁体   English   中英

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM