Szukam funkcji Rows.Scan() za pomocą refleksji. Jednak zajmuje on zmienną liczbę wskaźników, ale jestem nowy w Golang i nie ma wielu przykładów źródłowych. Potrzebuję użyć refleksji, ponieważ planuję wypełnienie wycinka wartościami z wywołania zapytania. Więc w zasadzie używając rows.Columns()
, aby uzyskać długość rzędu, a następnie make()
, plasterek []interface{}
, aby wypełnić punkty danych, które normalnie byłyby wypełnione przy użyciu wskaźników przekazanych do funkcji Scan()
.Jak wywołać funkcję variadic skanowania w Golang za pomocą odbicia?
Zasadniczo coś jak ten kod:
col := rows.Columns()
vals := make([]interface{}, len(cols))
rows.Scan(&vals)
ktoś ma przykład wywołanie zmiennej liczbie argumentów funkcji, które ma wskazówek pomocą refleksji, że mogę spojrzeć na?
Edytuj: Przykładowy kod, który wydaje się nie robić tego, co chcę.
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)
}
}
Wyniki:
[<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>]
Tworzenie terminala wiersza poleceń do wysyłania zapytań do baz danych w chmurze. To działało dobrze jako punkt wyjścia ... Dzięki! – openwonk
Ktoś próbował tego w wersji 1.4.2 lub wyższej ?. Otrzymuję wszystkie pola w rodzaju ciągu znaków – Anuruddha
Właśnie to, czego potrzebowałem, uwielbiam tę społeczność – Mauricio