问题标签 [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 投票
1 回答
1484 浏览

go - reflect.DeepEqual() 返回 false 但切片相同

我正在比较两个切片,都是 type []int。一种是以 json 的形式进入 API 并被解析为 go struct。在结构中,它被初始化为 empty []int{}。第二个保存在数据库(MongoDb)中并被提取并映射到相同的结构类型。

在某些情况下,这两个切片是完全空白的。但是比较又回来了false

reflect.DeepEqual(oldSettings.S1, newSettings.S1)

我还使用 . 检查了两个字段类型reflect.TypeOf(newSettings.S1)。两者都在重新调整[]int

请考虑这个操场链接的结构示例。

https://play.golang.org/p/1JTUCPImxwq

谢谢!

0 投票
1 回答
56 浏览

go - 遍历 struct na Go 的第 N 个字段

遍历 Go 中结构的字段

我已经阅读了上面的线程,现在我试图通过一次处理多个项目来扩展它

我之前遇到的错误:panic: reflect.Value.Interface: cannot return value obtained from unexported field or method

0 投票
1 回答
75 浏览

go - 如何使用反射调用字段方法

我有很多这样的结构,带有差异字段但有共同字段:fn func()

我要的是调用diff structs'实例的fn函数,如何实现;不用receiver func实现,fn没有导出

0 投票
0 回答
42 浏览

go - 从go中的字符串获取底层类型?

如果我有一个字符串,例如"api.Client",并且我想要其中的实际 golang 类型,我知道它存在,我该怎么做?

我已经扫描了reflect包裹,找不到任何东西,reflect.TypeOf("api.Client")当然会退货string

我真正想要的是稍后扫描该类型以查找它具有的所有方法,我知道我可以使用reflect. 但是我如何首先获得实际类型?

或者,我可以提供该类型存在的文件的完整路径,例如“app/api/client.go”,但我不知道这有什么帮助。

编辑:问题已结束,但仅供参考,我在提问时所处的位置。

pkg是上面提到的字符串,我可以通过对现有 repo 执行简单的 grep 来获得它。

0 投票
1 回答
571 浏览

go - 去反射阵列

结构如下:

我对在 Go 中使用 Reflect 很新鲜,我遇到了这个:

panic: reflect: call of reflect.Value.Bytes on array Value

当我运行时会发生这种情况val.Field(i).Bytes(),但是当我尝试打印它时:fmt.PrintLn(val.Field(i))它会打印出正确的数组。

我只是想知道,如何在数组或切片中检索 Msg_class?

0 投票
0 回答
22 浏览

go - Go Reflection - 带有方法的动态类型

使用 Go 的包,您可以使用reflect.StructOf()reflect创建动态结构类型:

有没有办法创建将这种新的动态类型作为接收器的函数/方法?具体来说,我想创建一个动态类型,使用StructOf()它实现一个接口(定义了几个方法),这样reflect.New(typ).Interface().(InterfaceType)会成功。

0 投票
1 回答
54 浏览

go - 如何使用反射创建参数实体

目前可以正确打印“Adata”和“Bdata”

但是我不知道如何将“Adata”和“Bdata”的空结构指针存储在amap中

不知道下一步

我想在amap中使用Method(i).Name()来存储Method需要传入的参数

0 投票
2 回答
107 浏览

go - 我怎样才能用反射独特地合并两个切片

假设我有很多自定义结构,

我想有一个功能来实现这样的事情:

这应该导致:

这样一个简单的函数就可以合并任何类型的自定义结构,包括 string/int,只要你在equalMatcherfunc 中有自己的实现。

实现此目的的函数接受两个切片和一个 equalMatcher 函数(如 Java 比较器),它修改第一个切片,然后合并第二个切片中的元素,但唯一。

但是我很恐慌:

我想这是因为func MergeSlices接受interface{}而不是[]interface{}

我希望我的MergeSlices功能有效。可以func MergeSlices有一个返回值。也欢迎任何第三方软件包建议。

先感谢您。

编辑:感谢@Aristofanio Garcia,我做了它有一个返回值。

以下是一些测试:

0 投票
0 回答
58 浏览

javascript - 如何使用 Reflect.getMetadata 检查异步/承诺

我在测试时发现了这个错误https://github.com/ztytotoro/rxjs-extension/blob/master/src/decorators.ts#L20

⏯游乐场链接

游乐场链接: 提供

代码

实际行为

预期行为

演示2

游乐场链接: 提供

实际行为

预期行为

0 投票
2 回答
379 浏览

go - 为什么“int”可以转换为“string”?

这个例子展示了 int 类型可以转换为 string 类型。但我的问题是为什么?

如我错了请纠正我。但这不false也应该吗?