Heim >Backend-Entwicklung >Golang >Wie gehe ich mit unerwarteten Feldern in fmt.Sprintf um?

Wie gehe ich mit unerwarteten Feldern in fmt.Sprintf um?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 19:05:02543Durchsuche

How to Handle Unexpected Fields in fmt.Sprintf?

Umgang mit unerwarteten Feldern in fmt.Sprintf

In der Go-Programmierung wird die Funktion fmt.Sprintf zum Formatieren von Zeichenfolgen verwendet. Es tritt jedoch ein Problem auf, wenn die Eingabezeichenfolge unerwartete Felder enthält, was zu einer Panik führt.

Problem

Betrachten wir den folgenden Codeausschnitt:

<code class="go">package main

import "fmt"

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

In diesem Beispiel , tmp_str ist eine Vorlagenzeichenfolge, die ein einzelnes Argument erwartet. Wenn das Programm jedoch eine vollständige Zeichenfolge wie „Hallo Freunde“ (anstelle einer Vorlage) empfängt, gerät fmt.Sprintf aufgrund des Vorhandenseins eines zusätzlichen Arguments in Panik. Die Fehlermeldung wäre:

Hello Friends%!(EXTRA string=world)

Lösung

Ein Ansatz zur Lösung dieses Problems besteht darin, die Verwendung eines gültigen %s-Verbs in der Vorlagenzeichenfolge zu erzwingen. Benutzer können ein Platzhalterverb wie %.0s oder %.s angeben, um anzugeben, dass das Argument auf die Länge Null gekürzt wird, wenn kein passendes Feld vorhanden ist. Hier ist ein Beispiel:

<code class="go">tmp_str := "Hello Friends%.s"</code>

Bei Verwendung von %.s werden alle zusätzlichen Felder abgeschnitten, was zur gewünschten Ausgabe führt:

Hello Friends

Das obige ist der detaillierte Inhalt vonWie gehe ich mit unerwarteten Feldern 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