0
我需要为接口(指向结构体)使用StructScan函数。 但是,如果我尝试反映价值,我有错误,因为反映。新()返回reflect.Value类型。我如何扫描结构和存储数据到dest var?使用sqlx.Rows.StructScan作为接口参数
// package 1
type Data struct {
id int `db:"id"`
caption string `db:"caption"`
}
func Func1 {
data := []Data{}
GetData(&data)
log.Println(data)
}
// package 2
func GetData(sql string, dest interface{}) {
rows, err := DBI.Queryx(sql)
if err == nil {
// reflect.Value
myData := reflect.New(reflect.TypeOf(dest).Elem().Elem())
for rows.Next() {
rows.StructScan(&myData) // Fail here
}
}
}
你的结构标记应该具有反引号,不是单引号。像https://github.com/jmoiron/sqlx这样的软件包也可以帮助将行编组到结构中。 – elithrar