如何使用 reflect 遍历结构

How to iterate through a struct in go with reflect

我有一个包含一些 url 参数的特定结构,我想使用 reflect 构建一个 url 参数字符串来遍历结构字段,这样我就不会关心结构是什么确实包含。

假设我有一个这样的结构:

type Student struct {
   Name string `paramName: "username"`
   Age int `paramName: userage`
}

我这样分配学生:

s := Student{
  Name : "Bob",
  Age : 15,
}

我想为这个学生实例构建一个这样的查询参数字符串:

username=Bob&userage=15

到目前为止我有:

func (s Student) buildParams() string {
    st := reflect.TypeOf(s)
    fieldCount := st.NumField()
    params := ""
    for i := fieldCount; i > 0 ; i-- {
      params = params +  "&" + st.Field(i).Tag.Get("paramName") + "=" + st.Field(i).Name
    }
    return params
}

但是 s.buildParams() 什么也没给我,不是每个字段中 paramName 的标记值事件:-(

那我该怎么做呢?

冒号和结构标记中的值之间不应有 space。 paramName:"username" 不是 paramName: "username"。此外,您使用的是字段名称而不是字段值。为了将值转换为字符串,您需要一些更复杂的东西。这是一个完整的例子:http://play.golang.org/p/4hEQ4jgDph