问题标签 [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.
go - 在 golang 中,是否可以从类型本身获取 reflect.Type,从名称作为字符串?
是否可以在无需实例化的情况下获得 t1 的反射类型?
是否可以通过将名称“t1”作为字符串来获取 t1 的反射类型?
go - 使用反射,如何设置结构字段的值?
使用 package.json 处理结构字段时遇到了困难reflect
。特别是,还没弄清楚如何设置字段值。
获取字段 i 的名称 - 这似乎有效
var field = reflect.TypeOf(r).Field(i).Name
将字段 i 的值作为 a) interface{}, b) int - 这似乎可行
var iface interface{} = reflect.ValueOf(r).Field(i).Interface()
var i int = int(reflect.ValueOf(r).Field(i).Int())
字段 i 的设置值 - 尝试一个 - 恐慌
reflect.ValueOf(r).Field(i).SetInt( i64 )
恐慌:reflect.Value·SetInt 使用使用未导出字段获得的值
假设它不喜欢字段名称“id”和“name”,因此重命名为“Id”和“Name”
a) 这个假设正确吗?
b)如果正确,认为没有必要,因为在同一个文件/包中
设置字段 i 的值 - 尝试两个(字段名称大写) - 恐慌
reflect.ValueOf(r).Field(i).SetInt( 465 )
reflect.ValueOf(r).Field(i).SetInt( i64 )
恐慌:reflect.Value·SetInt 使用不可寻址的值
@peterSO 下面的说明是彻底和高质量的
四。这有效:
reflect.ValueOf(&r).Elem().Field(i).SetInt( i64 )
他还记录了字段名称必须是可导出的(以大写字母开头)
go - 如何在 Go 中获取函数的名称?
给定一个函数,是否有可能得到它的名字?说:
有人告诉我runtime.FuncForPC会有所帮助,但我不明白如何使用它。
go - 在 Go 中,如何在运行时从其类型创建一个新的结构实例?
在 Go 中,如何在运行时从对象的类型创建对象的实例?我想您还需type
要先获取对象的实际值吗?
我正在尝试进行惰性实例化以节省内存。
go - 在 Go 中按名称调用结构及其方法?
我在MethodByName()
这里找到了一个函数调用http://golang.org/pkg/reflect/#Value.MethodByName但这并不是我想要的!(也许是因为我不知道如何使用它......我找不到任何例子)。我想要的是:
所以我想,首先我需要类似的东西StructByName()
,然后将它用于MethodByName()
,对吗!?
go - 如何在最新的 Go 周刊中比较两个函数的指针相等性?
在 Go 中,有没有办法比较两个非零函数指针来测试是否相等?我的平等标准是指针平等。如果不是,是否有任何特殊原因不允许指针相等?
到目前为止,如果我尝试以直接的方式执行此操作:
我明白了
据我了解,这种行为是最近引入的。
我使用反射包找到了答案;但是 Atom 在下面建议这实际上会产生未定义的行为。有关更多信息和可能的替代解决方案,请参阅 Atom 的帖子。
输出:
go - 实例新类型(Golang)
谁能告诉我如何从字符串创建一个新的 Type 实例?反映?
有一些示例,但它们适用于语言的较旧(Go 1 之前的版本)[:(]
go - 使用反射获取函数名称
我正在尝试使用 Go 的反射系统来检索函数的名称,但是在调用其类型的 Name 方法时得到一个空字符串。这是预期的行为吗?
这是我如何解决问题的一个简单示例:
go - 在不同类型的切片之间转换
我从 UDP 套接字获得一个字节切片 ( []byte
),并希望将其视为整数切片 ( []int32
),而不更改底层数组,反之亦然。在 C(++) 中,我只会在指针类型之间进行转换;我将如何在 Go 中做到这一点?
go - Go:按名称查找函数
我是键入安全的新手,不知道如何进行以下操作