戈兰在沉思中迷失了方向



我正在训练用go lang抽象一个rest API,但我完全陷入了反射部分。

    log.Printf("handleIndex resourceType = %v", res.resourceType)
slice := reflect.MakeSlice(reflect.SliceOf(res.resourceType), 0, 0)
err := res.api.DB.Select(&slice, "SELECT * FROM domains")
if err != nil {
    log.Printf("SQL Error %s", err)
}
fmt.Printf("n=================================== n%#v n=================================== ", slice)

resourceType是一个反射。型号

res.api.DB是sqlx。数据库

代码的输出为:

handleIndex resourceType=main。域

SQL错误需要切片,但得到了结构

[]main.Domain{}

所以基本上我也会做一些反射。类型i得到一个结构我缺少什么?

您正在将指向reflect.Value的指针传递到Select调用中。reflect.Value是一个结构,这就是您收到此错误的原因。

相反,使用reflect.New 创建所需类型的新指针

slice := reflect.New(reflect.SliceOf(res.resourceType))
err := res.api.DB.Select(slice.Interface(), "SELECT * FROM domains")

相关内容

  • 没有找到相关文章

最新更新