如何将 reflect.Value 转换为它的类型?
type Cat struct {
Age int
}
cat := reflect.ValueOf(obj)
fmt.Println(cat.Type()) // Cat
fmt.Println(Cat(cat).Age) // doesn't compile
fmt.Println((cat.(Cat)).Age) // same
谢谢!
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何将 reflect.Value 转换为它的类型?
type Cat struct {
Age int
}
cat := reflect.ValueOf(obj)
fmt.Println(cat.Type()) // Cat
fmt.Println(Cat(cat).Age) // doesn't compile
fmt.Println((cat.(Cat)).Age) // same
谢谢!
原文由 Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议
concreteCat,_ := reflect.ValueOf(cat).Interface().(Cat)
请参阅 http://golang.org/doc/articles/laws_of_reflection.html 狐狸示例
type MyInt int
var x MyInt = 7
v := reflect.ValueOf(x)
y := v.Interface().(float64) // y will have type float64.
fmt.Println(y)
原文由 sharewind 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答913 阅读✓ 已解决
2 回答2.2k 阅读
1 回答2.2k 阅读
好的,我找到了
reflect.Value
有一个函数Interface()
将它转换成interface{}