[英]Scan row into slice
我想將 sql.Row 掃描成一個切片,如下所示:
func printRows(rows *sql.Rows){
defer rows.Close()
for rows.Next() {
var row = []interface{}{}
err := rows.Scan(row...)
if err != nil {
log.Fatal(err)
}
r, err := json.Marshal(row)
if err != nil {
log.Fatal(err)
}
log.Println("row:", r);
}
}
但我收到此錯誤:
2020/02/23 20:05:14 原始查詢:SELECT * FROM user_table LIMIT 500 2020/02/23 20:05:14 sql:掃描中預期有 6 個目的地 arguments,而不是 0
任何人都知道如何在不使用切片的情況下制作這個通用的?
你可以這樣做:
cols, err := rows.Columns() // Remember to check err afterwards
vals := make([]interface{}, len(cols))
for i, _ := range cols {
vals[i] = new(string)
}
for rows.Next() {
err = rows.Scan(vals...)
}
在 inte.net 上,他們說您可以使用:
vals[i] = new(sql.RawBytes)
代替
vals[i] = new(string)
但我認為 (string) 很好,idk
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.