2 回答

TA贡献1801条经验 获得超8个赞
您只能在表示结构(即)上调用NumField
或Field
方法。reflect.Type
t.Kind() == reflect.Struct
如果您有切片类型,则可以通过Elem
方法访问包含的类型,该方法返回另一个reflect.Type
. 如果切片包含一个结构体,那么你可以在这个类型上调用NumField
/ Field
。

TA贡献1802条经验 获得超5个赞
您可以遍历切片,调用CreateQuery每个查询:
func CreateQueries(t interface{}, where string) {
v := reflect.ValueOf(t)
if v.Kind() == reflect.Ptr {
v = v.Elem()
}
if v.Kind() == reflect.Array || v.Kind() == reflect.Slice {
for i := 0; i < v.Len(); i++ {
CreateQuery(v.Index(i).Interface(), where)
}
}
}
使用reflect.Value.Index您可以单独访问每个字段,调用.Interface()该值会产生该值的interface{}类型表示,使其适合将其放入您的CreateQuery函数中(需要一个interface{}值)。
- 2 回答
- 0 关注
- 247 浏览
添加回答
举报