我有一个包含一些url参数的特定结构,我想使用reflect来构建一个url参数字符串来遍历struct字段,这样我就不会关心struct真正包含的是什么。
假设我有一个这样的结构:
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的标记值: - (
那我怎么能这样做?
答案 0 :(得分:1)
你不应该在冒号和struct标签中的值之间留一个空格。 paramName:"username"
不是paramName: "username"
。此外,您还使用字段名称而不是字段值。为了将值转换为字符串,您需要更复杂的东西。以下是一个完整的示例:http://play.golang.org/p/4hEQ4jgDph