Go 戈朗陷入了沉思

Go 戈朗陷入了沉思,go,reflection,Go,Reflection,我正在训练用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 {

我正在训练用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是模型的reflect.Type

res.api.DB是sqlx.DB

代码的输出为:

handleIndex resourceType=main.Domain

SQL错误应为slice,但得到struct []主域{} 所以基本上,我甚至做了一个反射类型的切片,我得到了一个结构
我缺少什么?

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

相反,创建一个您想要使用的类型的新指针


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

相反,创建一个您想要使用的类型的新指针

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