douzhushen_9776 2015-06-07 15:38
浏览 60

使用reflect.Set设置字段

I have code

var t reflect.Type = LaunchController(route.controller)

    // create controller ptr .
    var appControllerPtr reflect.Value = reflect.New(t)
    fmt.Println(appControllerPtr) //#=> <**controller.AppController Value>
    var appController reflect.Value = appControllerPtr.Elem()
    // Create and configure base controller
    var c *Controller = &Controller{
            Request: r,
            Writer: w,
            Name: t.Name(),
        }

    //this should assign *goninja.Controller field in application controllers
    var controllerField reflect.Value = reflect.ValueOf(appController).Field(0)
    controllerField.Elem().Set(reflect.ValueOf(c))

This creates pointer to element, and afterwards trying to assign value, into 0 field of this struct.

My struct, that i'm trying to reflect looks like

type AppController struct {
  *goninja.Controller
}

However when I'm trying to assign this field with code

controllerField.Elem().Set(reflect.ValueOf(c))

I'm facing following error

reflect: reflect.Value.Set using value obtained using unexported field

What am i doin wrong? Also I cant understand why my reflect.New(t) returns reflect.Value with 2 asterisks in beginning **

  • 写回答

1条回答 默认 最新

  • dpqvwgr74759 2015-06-08 18:06
    关注

    You don't give your complete code, so I have to guess a bit, but I suspect that the Controller field of the AppController structure has a lower-case name. Right? Here is my attempt to produce a minimal example from your code: working (with upper-case field name) and non-working (with lower-case fieldname).

    Also: where you write reflect.ValueOf(appController).Field(0), the appController is already of type reflect.Value, so the ValueOf is not required. You can just write appController.Field(0) as in the example code I linked above.

    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀