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

go - 如何比较嵌套结构,子切片字段中的字段相同但顺序不同

在下面的代码中,a1 和 a2 是相同的。它们具有相同的字段但具有不同的顺序(书 A 和书 B 的顺序不同)。当我使用 DeepEqual() 方法进行比较时,结果表明它们不相等。如何比较它们并得到它们相等的结果?

结果:

0 投票
1 回答
68 浏览

go - 如何使用反射从另一个函数创建新函数

使用此代码作为模板

如何修改newFuncHandler,以便在给定具有未知签名的函数的情况下,返回具有相同签名但具有函数体附加代码的函数。newFuncHandler不应该知道myStruct类型

例如

0 投票
1 回答
401 浏览

go - 如何使用反射动态构造结构切片

我试图用指针构造 Book 结构的切片,但我无法通过 Go 中的反射使其工作。

[]*Book 结构指针的 Book 切片,请注意,scanResults 方法可能会接收任何类型的切片,而不仅仅是 Book 结构。所以我希望在运行时动态构建一个切片

你能告诉我我在下面的代码片段中出错了吗?

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

0 投票
1 回答
258 浏览

go - 为什么在 Go 中反映错误类型的名称(或包路径)会导致恐慌?

在 Golang中使用反射来获取error类型的名称或包路径会导致程序崩溃(带有panic: runtime error: invalid memory address or nil pointer dereference)。

这种行为的原因是什么?(对其他内置类型执行相同的操作会返回类型名称和包路径的空字符串。)

我对语言的设计很感兴趣——我不明白为什么它对于error类型的行为与其他内置类型不同是可取的。

例如:

去游乐场: https: //play.golang.org/p/JBMhMkjGPEV

0 投票
1 回答
52 浏览

go - 使用 Go reflect 实例化一个新的 obj 并在接口中输入 assert

我无法解释为什么以下内容有效。

它打印

如果它是一个 Dock 类型,那么它就不是一个指向 Dock 的指针。为什么符合MyInterface

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

评论中的 d2 示例没有。

0 投票
1 回答
71 浏览

go - 检查方法类型是否与函数类型匹配

给定以下示例,如何检查方法是否与函数签名匹配?

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

0 投票
0 回答
128 浏览

go - 是否可以在 Golang 中为动态创建的结构(使用反射)提供名称

我有一个动态创建的结构,我想为这个结构提供一个名称。有可能这样做吗?

这打印

  1. 是否可以设置名称,例如Test1Dynamic Struct structDec
  2. go如何派生struct Name?我在动态结构创建str过程中看到值(与输出中的值相同)设置在中reflect.structType,这是如何为动态结构计算名称的吗?

去游乐场: https: //play.golang.org/p/8ra2pXZIHgp

0 投票
1 回答
60 浏览

go - 使用反射分配类型值

我正在开发我们的一个系统应用程序,特别是在配置文件处理位中。我们目前有 3 个不同的地方可以存储配置文件,以后可能会对其进行扩展。我正在尝试做的是简化我们需要添加新托管字段的方式。

到目前为止,我的解决方案如下所示:

到目前为止,我只是想念这篇文章来完成任务。

0 投票
1 回答
417 浏览

go - 在 Go 中,如何使用反射在结构上设置映射的值?

在 Go 中,如何使用 reflect 包来设置 a 的值map

Value我看到的与地图有关的唯一方法是MapIndex, MapKeys, MapRangeand (如果为 nilSetMapIndex则会出现恐慌)。map

我似乎无法设置地址,因为地图不可寻址。我不确定如何将m上面分配给mapped.M.

先感谢您。

0 投票
1 回答
35 浏览

go - 包可以成为 Go 中的接口吗?

我想在 Go 中执行以下操作,其中c/c.go包含:

a/a.go包含:

b/b.go包含:

一个明显的解决方案是开关:

但我想知道是否有可能更优雅地做到这一点,也许使用reflect包。问同样问题的另一种方法是,包可以成为 Go 中的接口吗?