首頁 >後端開發 >Golang >如何可靠地比較 Go 中的錯誤?

如何可靠地比較 Go 中的錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-27 13:46:11633瀏覽

How Can I Reliably Compare Errors in Go?

比較 Go 中的錯誤訊息

在 Go 中,錯誤只是實作錯誤介面的值。這意味著可以使用標準相等運算子(== 和 !=)來比較錯誤。但是,通常不建議透過 Error() 方法傳回的字串表示形式來比較錯誤。這是因為字串表示形式可能會隨著時間的推移而變化,這可能會使您的程式碼變得脆弱。

比較錯誤的更可靠方法是使用儲存預期錯誤的包級變數。此變數可用於與函數傳回的錯誤進行比較。例如:

package mypkg

import (
    "errors"
)

// ErrExample is an example error.
var ErrExample = errors.New("this is an example")

// DoSomething returns an error if something goes wrong.
func DoSomething() error {
    // ...

    // If something goes wrong, return the error.
    return ErrExample
}

要與DoSomething() 傳回的錯誤進行比較,可以使用下列程式碼:

if err := DoSomething(); err != nil {
    // Handle the error.
}

如果DoSomething() 傳回的錯誤等於ErrExample,則執行if語句。

如果包外的程式碼需要存取包級變量,也可以匯出包級變數 錯誤。例如:

package mypkg

import (
    "errors"
)

// ErrExample is an example error.
var ErrExample = errors.New("this is an example")

// Export the error.
var ErrExample = ErrExample

要使用匯出的錯誤,可以使用下列程式碼:

if err := somepackage.DoSomething(); err != nil {
    // Handle the error.
}

如果 somepackage.DoSomething() 傳回的錯誤等於 mypkg.ErrExample ,然後執行 if 語句。

透過使用包級變數來比較錯誤,可以讓你的程式碼更可靠,不易碎。

以上是如何可靠地比較 Go 中的錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn