问题标签 [go-reflect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
101 浏览

go - 使用反射,如何检查嵌入类型是否覆盖嵌入类型的方法?

对于嵌入式类型,我如何使用包反射来区分一个类型是通过嵌入式类型实现给定接口,还是它有自己的方法实现覆盖了嵌入式类型的实现?

具体示例(play.golang.org 上的完整示例):

检查a1a2使用reflect时,如何判断方法Stringin的实现A1是继承的,而方法StringinA2是直接附加的A2

我试图比较reflect.TypeOf(a1).MethodByName("String").Funcreflect.TypeOf(a1).Field(0).Type.MethodByName("String").Func但两个值不同。

注意:我真正的用例是我想编写单元测试来强制如果 A 实现 json.Marshaler,则嵌入 A 的类型有它自己的 json.Marshaler 实现。

0 投票
1 回答
400 浏览

go - 如何使用“反射”在结构的结构内设置接口值

尝试使用“反射”包设置接口值时遇到了困难。接口值实际上是在结构的结构内。在Go Playground中查看我的代码

基本上,在里面initProc,我想将dummyAFunc函数分配给struct中的DummyA字段Box

我是 Go 新手,我已经阅读了反射定律,但仍然无法弄清楚。请帮忙。谢谢!

0 投票
1 回答
92 浏览

go - 如何获取切片的元素类型?

如果有这样的结构:

如何获取切片中的元素类型arr

比如传入一个空的A实例,如何获取int类型?

0 投票
1 回答
290 浏览

go - 使用反射读取嵌套结构

我编写了一个递归函数,它遍历深层嵌套结构,如下所示:

如何使用反射访问内部对象(切片、结构)以使用它们?迭代我尝试使用的切片:

0 投票
0 回答
98 浏览

go - 获取包中的结构以进行 go-gorm 迁移

有一种方法可以获取包中的所有结构(在这种情况下为实体)以生成自动迁移列表?

我拆分实体和迁移包,现在我们有一个专用于 gorm 使用的所有实体的包,这就是我目前管理迁移的方式,完全手动添加每个新实体,我们必须修改迁移主代码,将新实体添加到migrationsList

我想找到一种自动方法来读取包实体循环中存在的所有结构并将它们附加到migrationsList

0 投票
1 回答
80 浏览

go - 读取顶级结构标签

如何从 Go 中的结构字段中获取标签?我有一个嵌套结构,我想将它作为参数传递给另一个函数并在那里读取标签。我知道通过将其作为字段访问是可能的,但我正在寻找一种方法。

0 投票
0 回答
66 浏览

go - 使用反射类型和值计算方法的输入参数返回不同的值

你能帮我理解为什么使用reflect.Typereflect.Value我不能为相同的方法获得相同数量的输入参数吗?

我知道第二种方法可能不正确,因为 Strings() 有三个参数,u User,value int,s string,但为什么不正确?

https://play.golang.org/p/XZHL9WBRTzd

我还附上了一些在研究该问题时在博客中找到的参考代码。

0 投票
1 回答
260 浏览

go - reflect.TypeOf((*error)(nil)).Elem()` 是什么意思?

reflect.TypeOf((*error)(nil)).Elem()这段代码是什么意思?我知道if mType.Out(0) != reflect.TypeOf((*error)(nil)).Elem()正在尝试确定方法的返回类型是否是错误而不是。但对我来说,reflect.TypeOf((error)(nil))直觉上会做同样的事情,但不幸的是不会。当我尝试编译这段代码时,它说类型错误不是表达式,在这种情况下是什么意思?不reflect.Typeof()接受某种类型的参数?我发现 (*error)(nil) 等价于 *error = nil。在上面的上下文中,我对这个表达感到困惑。

0 投票
2 回答
80 浏览

go - 附加到作为空接口传递的 golang 切片

如何附加到空接口(已验证为 *[] 结构)?

我尝试过的事情:

这简直是​​恐慌:反射:在 ptr 值上调用 reflect.Append(因为我们通过 &mySlice 而不是 mySlice)

这有效,但不会将值设置回 dest... 在 main func 中,调用 decode 函数后 len(mySlice) 保持为 0。

0 投票
1 回答
47 浏览

go - 去反思:如何动态创建一个指向...的指针?

我想创建一个reflect.Value表示指向最终值的多级嵌套指针。嵌套级别在编译时是未知的。如何使用创建指向指针的指针reflect

在尝试创建指向指针的指针时,我已经绊倒了“不可寻址的值”障碍。

等相同stargazer.UnsafeAddr()。虽然stargazer.Elem().UnsafeAddr()etc. 有效,但我看不出这如何帮助(递归地)创建指向指针的新非零指针......