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:
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!