是的,Go語言允許你自定義錯誤碼。你可以通過實現error
接口來創建自定義錯誤類型,并在其中定義自己的錯誤碼。下面是一個簡單的示例:
package main
import (
"fmt"
)
// 自定義錯誤類型
type CustomError struct {
Code int
Message string
}
// 實現error接口的Error()方法
func (e *CustomError) Error() string {
return fmt.Sprintf("code: %d, message: %s", e.Code, e.Message)
}
// 自定義錯誤函數
func customFunction() error {
// 根據條件返回不同的自定義錯誤
if true {
return &CustomError{Code: 400, Message: "Bad Request"}
}
return nil
}
func main() {
err := customFunction()
if err != nil {
// 類型斷言,將error轉換為*CustomError類型
if customErr, ok := err.(*CustomError); ok {
fmt.Println("自定義錯誤碼:", customErr.Code)
fmt.Println("自定義錯誤信息:", customErr.Message)
} else {
fmt.Println("未知錯誤:", err)
}
} else {
fmt.Println("操作成功")
}
}
在這個示例中,我們定義了一個名為CustomError
的自定義錯誤類型,它包含一個錯誤碼(Code
)和一個錯誤信息(Message
)。我們還實現了error
接口的Error()
方法,以便我們可以將自定義錯誤類型與內置的錯誤處理機制一起使用。
在customFunction
函數中,我們根據條件返回不同的自定義錯誤。在main
函數中,我們使用類型斷言將error
轉換為*CustomError
類型,以便我們可以訪問自定義錯誤碼和錯誤信息。