Bewahrung der Integrität mehrerer Argumente in formatierten Fehlern
Um eine benutzerdefinierte Version von Fehlern zu implementieren. Neu, das die Formatierung variabler Argumente ermöglicht, Wir stehen vor einer technischen Herausforderung. Wie der bereitgestellte Code zeigt:
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }</code>
Der ...a-Parameter wird während des Methodenaufrufs unbeabsichtigt in ein einzelnes Array zusammengeführt, was zu einer falschen Formatierung führt. Die Lösung liegt in der Emulation der Funktionalität von fmt.Errorf, wie sie im Quellcode zu sehen ist:
<code class="go">func Errorf(format string, a ...interface{}) error { return errors.New(Sprintf(format, a...)) }</code>
Beachten Sie, dass der ...-Operator auf a nach der Parameterliste folgt. In Go ermöglicht diese Syntax die Übergabe von Argumenten als separate Werte und nicht als einzelnes zusammengeführtes Array. Die Spezifikation beschreibt dieses Verhalten:
Wenn das letzte Argument einem Slice-Typ []T zuweisbar ist, kann es unverändert als Wert für einen ...T-Parameter übergeben werden, wenn auf das Argument ... folgt. .
Durch die Einbindung des ...-Operators, wie er in fmt.Errorf zu sehen ist, stellen wir sicher, dass mehrere Argumente während der Formatierung ihre Individualität behalten, was zu dem gewünschten Verhalten führt:
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a...)) }</code>
Das obige ist der detaillierte Inhalt vonWie kann die Argumentintegrität bei formatierten Fehlern gewahrt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!