【发布时间】:2013-09-20 21:39:55
【问题描述】:
基本上,(据我所知)迭代struct 的字段值的唯一方法是这样的:
type Example struct {
a_number uint32
a_string string
}
//...
r := &Example{(2 << 31) - 1, "...."}:
for _, d:= range []interface{}{ r.a_number, r.a_string, } {
//do something with the d
}
我想知道,是否有更好、更通用的方法来实现[]interface{}{ r.a_number, r.a_string, },所以我不需要单独列出每个参数,或者,是否有更好的方法来循环遍历结构?
我试图查看reflect 包,但我碰壁了,因为我不知道在检索到reflect.ValueOf(*r).Field(0) 后该做什么。
谢谢!
【问题讨论】:
-
这是一篇关于反射的非常有趣的文章:blog.golang.org/laws-of-reflection 遵循文章中的一个示例:play.golang.org/p/_bKAQ3dQlu 但是请注意,您不能使用反射包查找未导出的字段(即以小写开头的字段)
标签: go go-reflect