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