Heim > Backend-Entwicklung > Golang > Warum bevorzugt „fmt.Println' in Go „Error()' gegenüber „String()'?

Warum bevorzugt „fmt.Println' in Go „Error()' gegenüber „String()'?

Susan Sarandon
Freigeben: 2024-11-30 04:22:11
Original
693 Leute haben es durchsucht

Why Does `fmt.Println` Prefer `Error()` Over `String()` in Go?

Error() überschreibt String() in fmt.Println

In der Programmiersprache Go, wenn ein Typ sowohl String() als auch implementiert Bei den Error()-Methoden gibt die Funktion fmt.Println der Funktion Error() Vorrang. Das heißt, wenn beide Methoden für einen bestimmten Typ implementiert sind, verwendet fmt.Println die von Error() generierte Ausgabe.

Um zu verstehen, warum dies der Fall ist, ist es wichtig, einen Blick auf die Dokumentation zu werfen fmt-Paket. Der Dokumentation zufolge gibt es bestimmte Regeln, die regeln, wie fmt verschiedene Datentypen formatiert. Diese Regeln werden in der folgenden Reihenfolge angewendet:

  1. Wenn die Daten die Formatter-Schnittstelle implementieren, wird die Formatter-Methode zum Formatieren der Daten verwendet.
  2. Wenn das %#v-Format verwendet wird und die Daten die GoStringer-Schnittstelle implementieren, wird die GoStringer-Methode zum Formatieren der Daten verwendet.
  3. Wenn die Daten die Fehlerschnittstelle implementieren, wird die Error-Methode zum Formatieren verwendet Daten.
  4. Wenn die Daten die String()-Methode implementieren, wird die String()-Methode zum Formatieren der Daten verwendet.

Im bereitgestellten Beispiel implementiert der Person-Typ beide String ()- und Error()-Methoden. Wenn jedoch die Funktion fmt.Println aufgerufen wird, um den Typ „Person“ zu drucken, wird die Methode „Error()“ anstelle der Methode „String()“ aufgerufen. Dies liegt daran, dass die Error()-Methode gemäß den in der fmt-Paketdokumentation beschriebenen Regeln Vorrang vor der String()-Methode hat.

Wenn ein Typ daher sowohl die String()- als auch die Error()-Methode implementiert, ist die Die Funktion fmt.Println verwendet immer die Ausgabe der Error()-Methode. Dies liegt daran, dass die Error()-Methode in der Reihenfolge der Formatierungsregeln höher eingestuft ist als die String()-Methode.

Das obige ist der detaillierte Inhalt vonWarum bevorzugt „fmt.Println' in Go „Error()' gegenüber „String()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage