Heim >Backend-Entwicklung >Golang >Warum gibt „fmt.Println' „bad error' anstelle des ganzzahligen Werts aus, wenn ein Typ die „error'-Schnittstelle implementiert?
Warum gibt eine Schnittstelle „bad error“ für die Fehlermethode eines benutzerdefinierten Typs zurück?
In Go kann eine Schnittstelle verwendet werden um Methoden für einen Typ zu definieren. Wenn ein Objekt eine Schnittstelle implementiert, stellt es eine Implementierung für jede der von dieser Schnittstelle definierten Methoden bereit.
Betrachten Sie das folgende Beispiel:
type T int func (t T) Error() string { return "bad error" } func main() { var v interface{} = T(5) fmt.Println(v) // Output: "bad error" }
In diesem Beispiel ist die Error-Methode definiert für den Typ T. Wenn jedoch der Wert v mit fmt.Println gedruckt wird, ist die Ausgabe „bad error“ anstelle des erwarteten ganzzahligen Werts 5. Um dieses Verhalten zu verstehen, schauen wir uns das fmt-Paket an Dokumentation:
Hier In diesem Fall wird die Funktion fmt.Println verwendet, die fmt.Printf("%v", v) entspricht. Hier ist eine Erklärung, was passiert:
Zum Drucken des ganzzahligen Werts von v Stattdessen können Sie fmt.Printf("%d",v).
verwendenDas obige ist der detaillierte Inhalt vonWarum gibt „fmt.Println' „bad error' anstelle des ganzzahligen Werts aus, wenn ein Typ die „error'-Schnittstelle implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!