Heim > Backend-Entwicklung > Golang > Fehler. Gibt false zurück, wenn es Slices enthält

Fehler. Gibt false zurück, wenn es Slices enthält

王林
Freigeben: 2024-02-12 16:36:05
nach vorne
842 Leute haben es durchsucht

错误。如果包含切片,则返回 false

Frageninhalt

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{}))
}
Nach dem Login kopieren

Rückkehr


equal: false
Nach dem Login kopieren
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{}))
}
Nach dem Login kopieren

Rückkehr


equal: true
Nach dem Login kopieren

................................................. ............... ................................... ................................. ................ ................................................. ....................................................... ................................. ................ ................................................. .....

Lösung

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage