问题标签 [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 回答
6338 浏览

go - 从 Golang 中的函数列表中选择一个函数

基本上,如果我有一个任意函数的切片或数组,我怎样才能只选择返回 int 的那些,或者只选择那些带 int 的?

我想我需要使用反射包,但是仅仅阅读文档并不能真正帮助我弄清楚如何去做。

0 投票
8 回答
131547 浏览

go - 类型转换接口切片

我很好奇为什么 Go 不会隐式转换为何[]T[]interface{}隐式转换Tinterface{}. 我错过了这种转换是否有一些重要的东西?

例子:

go build抱怨

不能在函数参数中使用 (type []string) 作为类型 []interface {}

如果我尝试明确地这样做,同样的事情:b := []interface{}(a)抱怨

无法将 (type []string) 转换为 type []interface {}

所以每次我需要进行这种转换(这似乎经常出现)时,我一直在做这样的事情:

有没有更好的方法来做到这一点,或者标准库函数来帮助这些转换?每次我想调用一个可以获取整数或字符串列表的函数时,多写 4 行代码似乎有点愚蠢。

0 投票
5 回答
97740 浏览

go - 存储切片的接口{}上的范围

鉴于您有一个接受t interface{}. 如果确定t是一个切片,我如何range覆盖该切片?

去游乐场示例:http ://play.golang.org/p/DNldAlNShB

0 投票
3 回答
14749 浏览

go - 无论接收者类型如何,都在 interface{} 上动态调用方法

我正在开发一个用 Go 编写的模板系统,这意味着它需要自由使用该reflect包。在这种特定情况下,我需要能够动态调用interface{}. 奇怪的是,只要我的数据是已知类型,我的反射逻辑就可以正常工作,但如果数据是 type 则不行interface{}

下面的例子你可以看到main()和中的逻辑Pass()是相同的。唯一的区别是数据是已知类型还是内部已知类型interface{}

去玩:http ://play.golang.org/p/FTP3wgc0sZ

执行此代码后,我们得到以下结果

这意味着我动态调用方法的方法可以正常工作,除非我的对象当前位于interface{}.

相反,如果我不使用指针接收器并通过,i那么它会按预期工作。

去玩:http ://play.golang.org/p/myM0UXVYzX

这让我相信我的问题是&i当 i() 是一个interface{}. 我已经搜索了反射包并测试了诸如reflect.Value.Addr()和之类的东西,reflect.PtrTo()但是我无法按照我需要的方式工作。我的预感是它与 aninterface{}定义为引用对象这一事实有关。

0 投票
9 回答
150253 浏览

go - 检查两个切片的相等性

如何检查两个切片是否相等?

0 投票
7 回答
183698 浏览

go - 遍历 Go 中结构的字段

基本上,迭代 a 的字段值的唯一方法(据我所知)struct是这样的:

我想知道,是否有更好、更通用的实现方式[]interface{}{ r.a_number, r.a_string, },所以我不需要单独列出每个参数,或者是否有更好的方法来循环遍历结构?

我试图翻阅reflect包裹,但我碰壁了,因为我不知道一旦我取回了该做什么reflect.ValueOf(*r).Field(0)

谢谢!

0 投票
4 回答
99690 浏览

go - 按名称访问结构属性

这是一个不工作的简单 go 程序:

错误:

prog.go:18:无效操作:v[property](*Vertex 类型的索引)

我想要的是使用其名称访问 Vertex X 属性。如果我这样做v.X,它会起作用,但v["X"]不会。

有人可以告诉我如何进行这项工作吗?

0 投票
2 回答
17975 浏览

arrays - Golang:获取切片的类型

我正在使用反射包来获取任意数组的类型,但是得到

如何从数组中获取类型?我知道如何从价值中得到它。

http://play.golang.org/p/sNw8aL0a5f

0 投票
16 回答
483305 浏览

go - 如何在 Go 中查找对象的类型?

如何在 Go 中找到对象的类型?在 Python 中,我只是typeof用来获取对象的类型。同样在 Go 中,有没有办法实现相同的?

这是我从中迭代的容器:

在这种情况下,我无法获取对象行的类型,即字符串数组。

0 投票
2 回答
14690 浏览

function - 如何正确使用反射包中的.Call

我的代码遇到了最后一个问题,它涉及反射包中的 .Call 函数。

所以我正在打这样的电话:

我进行 .Call 的方法如下:

我不太明白的是如何操作“in”变量以便正确地将我需要的映射传递给函数。我看到make()中的第二个参数是参数的长度?但我不太明白如何格式化变量以正确传递我的参数。我递归地遇到错误消息:

任何帮助将非常感激!