Wie kann die Argumentintegrität bei formatierten Fehlern gewahrt werden?

Susan Sarandon
Freigeben: 2024-11-05 05:04:01
Original
550 Leute haben es durchsucht

How to Preserve Argument Integrity in Formatted Errors?

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

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

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

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!

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