sách gpt4 ăn đã đi

reflection - 使用 reflect.Set 设置字段

In lại 作者:IT王子 更新时间:2023-10-29 01:42:40 29 4
mua khóa gpt4 giày nike

我有代码

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))

这将创建指向元素的指针,然后尝试将值赋值到该结构的 0 字段中。

我试图反射(reflect)的我的结构看起来像

type AppController struct {
*goninja.Controller
}

但是当我试图用代码分配这个字段时

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

我正面临以下错误

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

我做错了什么?我也不明白为什么我的 reflect.New(t) 返回 reflect.Value 开头有 2 个星号 **

câu trả lời hay nhất

你没有给出完整的代码,所以我不得不猜测一下,但我怀疑 Bộ điều khiển ứng dụng 结构的 Bộ điều khiển 字段有一个小写姓名。正确的?这是我尝试从您的代码中生成一个最小示例:working (带有大写字段名称)和 non-working (使用小写的字段名)。

此外:在您编写 reflect.ValueOf(appController).Field(0) 的地方,appController 已经是 reflect.Value 类型,因此不需要 ValueOf。您可以按照我上面链接的示例代码编写 appController.Field(0)

关于reflection - 使用 reflect.Set 设置字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30695405/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress