Heim > Backend-Entwicklung > Golang > Go-String-Formatierung: Jenseits von „fmt.Sprintf()' – Welche Alternativen gibt es?

Go-String-Formatierung: Jenseits von „fmt.Sprintf()' – Welche Alternativen gibt es?

Susan Sarandon
Freigeben: 2024-12-20 02:47:09
Original
611 Leute haben es durchsucht

Go String Formatting:  Beyond `fmt.Sprintf()` – What are the Alternatives?

Äquivalent zu Python string.format in Go?

In Python bietet die String-Interpolation mit der format()-Methode Flexibilität beim Sortieren und Ersetzen von Parametern. In Go bietet die Funktion fmt.Sprintf() jedoch eine eingeschränktere Option, was die Internationalisierung behindert (I18N). Gibt es eine geeignetere Alternative, die eine unabhängige Parameterreihenfolge ermöglicht?

Strings.Replacer

Mit strings.Replacer können Sie Ihren benutzerdefinierten String-Formatierer effektiv erstellen.

func main() {
    file, err := "/data/test.txt", "file not found"

    log("File {file} had error {error}", "{file}", file, "{error}", err)
}

func log(format string, args ...string) {
    r := strings.NewReplacer(args...)
    fmt.Println(r.Replace(format))
}
Nach dem Login kopieren

Beispielausgabe:

File /data/test.txt had error file not found
Nach dem Login kopieren

WiText/Vorlage

Die Das Paket text/template bietet eine vorlagenbasierte Lösung, die jedoch ausführlicher sein kann als der Strings.Replacer-Ansatz.

type P map[string]interface{}

func main() {
    file, err := "/data/test.txt", 666

    log4("File {{.file}} has error {{.error}}", P{"file": file, "error": err})
}

func log4(format string, p P) {
    t := template.Must(template.New("").Parse(format))
    t.Execute(os.Stdout, p)
}
Nach dem Login kopieren

Beispielausgabe:

File /data/test.txt has error 666
Nach dem Login kopieren

Explizite Argumentindizes

fmt.Sprintf() unterstützt explizite Argumentindizes, sodass Sie denselben Index mehrmals wiederholen können, um denselben Parameter zu ersetzen. Erfahren Sie mehr über diese Technik in der zugehörigen Frage „Ersetzen Sie alle Variablen in Sprintf durch dieselbe Variable.“

Das obige ist der detaillierte Inhalt vonGo-String-Formatierung: Jenseits von „fmt.Sprintf()' – Welche Alternativen gibt es?. 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