我有一个包含一些url参数的特定结构,我想使用reflect来遍历struct字段来构建一个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的标记值都::(那么我该怎么做呢?
最佳答案
冒号和struct标记中的值之间不应有空格。 paramName:"username"
不是paramName: "username"
。另外,您正在使用字段名称而不是字段值。为了将值转换成字符串,您将需要一些更复杂的东西。这是一个完整的示例:http://play.golang.org/p/4hEQ4jgDph