相关疑难解决方法(0)

如何使用反射在Golang中调用Scan variadic函数?

我想用反射来调用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)

database reflection go

29
推荐指数
2
解决办法
2万
查看次数

标签 统计

database ×1

go ×1

reflection ×1