登录
首页 >  Golang >  Go问答

使用 Reflect 动态将结构体字段设置为切片值

来源:stackoverflow

时间:2024-04-18 22:27:30 336浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《使用 Reflect 动态将结构体字段设置为切片值》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

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

                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 包中没有看到任何 setslice 方法。

valuefield 的类型为 []string 时,如何执行上述操作?


解决方案


Value.SetString() 是设置 string 值的便捷方法。由于显而易见的原因,没有适用于所有类型的单独方法,但有一个“通用”Value.Set() 方法,您可以使用它。您只需从要设置的值中获取 reflect.value 即可:

var someSlice ...
valueField.Set(reflect.ValueOf(someSlice))

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用 Reflect 动态将结构体字段设置为切片值》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>