我希望使用反射调用Rows.Scan()函数。然而,它需要可变数量的指针,但没有很多源示例。我需要使用反射,因为我计划用来自 Query 调用的值填充切片。所以基本上使用rows.Columns()来获取行的长度,然后用make()一个切片[]interface{}来填充通常使用传递给Scan()函数的指针填充的数据点。
基本上是这样的代码:
col := rows.Columns()
vals := make([]interface{}, len(cols))
rows.Scan(&vals)
任何人都有调用可变参数函数的示例,该函数使用反射获取指针,我可以查看一下?
编辑:示例代码似乎没有做我所追求的。
package main
import (
_ "github.com/lib/pq"
"database/sql"
"fmt"
)
func main() {
db, _ := sql.Open(
"postgres",
"user=postgres dbname=Go_Testing password=ssap sslmode=disable")
rows, _ := db.Query("SELECT * FROM _users;")
cols, _ := rows.Columns()
for rows.Next() {
data := make([]interface{}, len(cols))
rows.Scan(data...)
fmt.Println(data)
}
}
结果:
[<nil> <nil> <nil> <nil> <nil>]
[<nil> <nil> <nil> <nil> <nil>]
[<nil> <nil> <nil> <nil> <nil>]
[<nil> <nil> <nil> <nil> <nil>]
[<nil> <nil> <nil> <nil> <nil>]
[<nil> <nil> <nil> <nil> <nil>]
MMMHUHU
汪汪一只猫
相关分类