1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
我將對此進(jìn)行一些不同的處理,然后將處理程序傳遞給您的函數(shù)。因此,如果您的函數(shù)當(dāng)前為:
func YourFunc() (*sql.Rows, error) {
// ...
if (...) {
return nil, nil
}
return rows, nil
}
它將是:
func yourFunc() (*sql.Rows, error) {
// ...
if (...) {
return nil, sql.ErrNoRows
}
return rows, nil
}
func YourFunc(cb func(*sql.Rows)) error {
rows, err := yourFunc()
if err == sql.ErrNoRows {
return nil
}
if err != nil {
return err
}
cb(rows)
return nil
}
然后在您的呼叫者中:
err := YourFunc(func(row *sql.Rows) {
for rows.Next() {
// ...
}
})
這將具有傳遞給您的函數(shù),僅當(dāng)存在行時(shí)才調(diào)用該函數(shù),如果您關(guān)心的是行,則您將得到錯(cuò)誤,并且調(diào)用方的語法很干凈。
- 1 回答
- 0 關(guān)注
- 270 瀏覽
添加回答
舉報(bào)