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 关注
- 186 浏览
添加回答
举报
