我正在使用本地 sql 库和 jmoiron/sqlx 从 postgres 数据库填充结构列表。我目前有针对不同类型的单独功能,例如:
func selectAccounts(ext sqlx.Ext, query string, args []interface{}) ([]Account, error) {
var accts []Account
rows, err := ext.Queryx(query, args...)
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var a Account
if err = rows.StructScan(&a); err != nil {
return nil, err
}
accts = append(accts, a)
}
err = rows.Err()
return accts, err
}
...但我需要构建一个接受 interface{} 并返回 []interface{} 的通用函数。我发现替换上述行的过程var a Account
很困难,因为它需要在复制其基础类型时复制传入的 interface{} 类型。我应该接受我需要使用反射的事实,还是有其他方法可以做到这一点?