小编qwe*_*xcv的帖子

恐慌:反映:在接口值上调用reflect.Value.FieldByName

我有一个类型的变量,interface{}我想使用反射更改字段的值。我该怎么做?interface{}由于其他要求,变量必须属于类型。如果变量不是interface{}所有工作类型,否则代码抛出

reflect: call of reflect.Value.FieldByName on interface Value
Run Code Online (Sandbox Code Playgroud)

我的代码

package main

import (
    "fmt"
    "reflect"
)

func main() {
    a := struct {
        Name string
    }{}

    // works
    reflect.ValueOf(&a).Elem().FieldByName("Name").SetString("Hello")
    fmt.Printf("%#v\n", a)

    var b interface{}
    b = struct {
        Name string
    }{}
    // panics
    reflect.ValueOf(&b).Elem().FieldByName("Name").SetString("Hello")
    fmt.Printf("%#v\n", b)
}

Run Code Online (Sandbox Code Playgroud)

reflection go reflect

2
推荐指数
1
解决办法
2686
查看次数

标签 统计

go ×1

reflect ×1

reflection ×1