Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit fehlenden Ersatzwerten in fmt.Sprintf um?

Wie gehe ich mit fehlenden Ersatzwerten in fmt.Sprintf um?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 11:04:01828Durchsuche

How to Handle Missing Replacement Values in fmt.Sprintf?

Überzählige Felder in fmt.Sprintf ignorieren

Stellen Sie sich ein Szenario vor, in dem ein Go-Programm eine Zeichenfolgeneingabe über die Befehlszeile verarbeitet und fmt verwendet. Sprintf, um eine formatierte Zeichenfolge zu generieren. Wenn die Eingabe, dargestellt als tmp_str, Platzhalter (z. B. „%s“) enthält und der zugehörige Ersatzwert nicht bereitgestellt wird, löst fmt.Sprintf einen Fehler mit der Meldung „EXTRA string=world“ aus, wobei „world“ der ist fehlender Ersatz.

Um dieses Problem zu beheben und Situationen, in denen die Eingabe möglicherweise keine Platzhalter enthält, ordnungsgemäß zu handhaben, besteht ein Ansatz darin, von Befehlszeilenbenutzern zu verlangen, dass sie konsequent einen „%s“-Platzhalter einfügen. Dadurch wird sichergestellt, dass das Programm eine Panik vermeidet, auch wenn dem Platzhalter kein Wert zugewiesen ist. Wenn Sie die Zeichenfolge auf die Länge Null kürzen, wie im folgenden Beispiel gezeigt, wird jede Ausgabe im Zusammenhang mit dem Platzhalter unterdrückt:

<code class="go">package main

import "fmt"

func main() {
    tmp_str := "Hello Friends%.0s"
    str := fmt.Sprintf(tmp_str, "")
    fmt.Println(str)
}</code>

Ausgabe:

Hello Friends

Durch die Verwendung dieser Strategie wird das Programm kann alle überzähligen Ersetzungsfelder, die an fmt.Sprintf übergeben werden, ignorieren und ein stabiles Verhalten beibehalten.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit fehlenden Ersatzwerten in fmt.Sprintf um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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