我想用反射来调用Rows.Scan()函数.然而,它需要可变数量的指针,但我是Golang的新手,并没有很多源代码示例.我需要使用反射,因为我计划使用Query调用中的值填充切片.所以基本上使用rows.Columns()获得该行的长度,然后make()切片[]interface{}来填充数据点通常会使用传递到指针填充Scan()功能.
基本上像这样的代码:
col := rows.Columns()
vals := make([]interface{}, len(cols))
rows.Scan(&vals)
Run Code Online (Sandbox Code Playgroud)
任何人都有一个调用可变参数函数的例子,它使用我可以看一下的反射来获取指针?
编辑:示例代码似乎没有做我想要的.
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)
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
[<nil> <nil> <nil> <nil> <nil>]
[<nil> <nil> <nil> <nil> <nil>]
[<nil> <nil> <nil> <nil> …Run Code Online (Sandbox Code Playgroud)