1 回答

TA貢獻1878條經驗 獲得超4個贊
您的代碼不檢查錯誤:
row.Scan(&ex.Id, &ex.Name)可能會返回一個錯誤(并且,在pgx實現中,這個錯誤對于rows迭代來說是致命的):
err := rows.Scan(&ex.Id, &ex.Name)
if err != nil {
fmt.Printf("*** rows.Scan error: %s", err)
return nil, err
}
錯誤檢查有一個陷阱:您應該檢查退出循環后sql.Rows / pgx.Rows是否發生錯誤:for rows.Next() {
for rows.Next() {
...
}
// check rows.Err() after the last rows.Next() :
if err := rows.Err(); err != nil {
// on top of errors triggered by bad conditions on the 'rows.Scan()' call,
// there could also be some bad things like a truncated response because
// of some network error, etc ...
fmt.Printf("*** iteration error: %s", err)
return nil, err
}
return example, nil
旁注:在絕大多數情況下,您不想返回指向切片(例如:)的指針,而是返回切片(例如*[]Example:)[]Example
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報