Error.Is scheint nicht zu funktionieren, wenn ich eine Fehlerstruktur habe, die darin verschachtelte Slices enthält:
package main import ( "errors" "fmt" "os" ) type Response struct { Details []string } type ErrResponseError struct { Response Response } func (err ErrResponseError) Error() string { return "response error" } func main() { err := ErrResponseError{} fmt.Fprintf(os.Stdout, "equal: %v", errors.Is(err, ErrResponseError{})) }
Rückkehr
equal: false
package main import ( "errors" "fmt" "os" ) type Response struct { Details string // Changed this line } type ErrResponseError struct { Response Response } func (err ErrResponseError) Error() string { return "response error" } func main() { err := ErrResponseError{} fmt.Fprintf(os.Stdout, "equal: %v", errors.Is(err, ErrResponseError{})) }
Rückkehr
equal: true
................................................. ............... ................................... ................................. ................ ................................................. ....................................................... ................................. ................ ................................................. .....
Aus der Dokumentation:
Sie können dies tun, indem Sie eine Is
Methode schreiben, um zwei Slices zu vergleichen.
Der standardmäßige Fehlervergleichsalgorithmus prüft, ob der Fehler mit dem Ziel übereinstimmt. Da Ihr Fehler ein Slice enthält, ist er nicht vergleichbar.
Das obige ist der detaillierte Inhalt vonFehler. Gibt false zurück, wenn es Slices enthält. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!