簡體   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