Я пытаюсь вызвать функцию 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>]