Go 1.13 為錯誤引入了新功能,以簡化錯誤處理。在 Go 1.13 之前,我通過以下方式檢查代碼是否有錯誤:if err == nil { // ...}但 Goerrors.Is()幫助我正確地做到了這一點:這是一種明智的方法,可以讓您的代碼面向未來,并防止您(或您的代碼導入的任何包)將來出現包裝錯誤而引起問題。對于這樣的情況來說這是可以的:if errors.Is(err, sql.ErrNoRows) { // ...}這是否意味著我必須將所有err == nil陳述更改為:if errors.Is(err, nil) { // ...}
2 回答

ITMISS
TA貢獻1871條經驗 獲得超8個贊
不,你不知道。error.Is 檢查底層錯誤值。如果某些代碼返回 sql.ErrNoRows 并且稍后決定包裝該錯誤,則errors.Is(err, sql.ErrNoRows) 會像以前一樣繼續工作,但 err == sql.ErrNoRows 將計算為 false。
nil 錯誤值意味著沒有錯誤,因此沒有任何內容可以換行。您無法編寫任何代碼來更改 err != nil 的計算結果,同時仍然不返回任何錯誤。只有一種方法可以不返回錯誤:nil。
- 2 回答
- 0 關注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消