Maison > développement back-end > Golang > Aller au formatage des chaînes : au-delà de « fmt.Sprintf() » – Quelles sont les alternatives ?

Aller au formatage des chaînes : au-delà de « fmt.Sprintf() » – Quelles sont les alternatives ?

Susan Sarandon
Libérer: 2024-12-20 02:47:09
original
611 Les gens l'ont consulté

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

Équivalent de Python string.format dans Go ?

En Python, l'interpolation de chaîne à l'aide de la méthode format() offre une flexibilité dans l'ordre et le remplacement des paramètres. Cependant, dans Go, la fonction fmt.Sprintf() propose une option plus limitée, gênant l'internationalisation (I18N). Existe-t-il une alternative plus appropriée permettant un classement indépendant des paramètres ?

Strings.Replacer

L'utilisation de strings.Replacer vous permet de créer efficacement votre formateur de chaîne personnalisé.

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))
}
Copier après la connexion

Exemple de sortie :

File /data/test.txt had error file not found
Copier après la connexion

WiText/Template

Le Le package text/template offre une solution basée sur un modèle, bien qu'elle puisse être plus détaillée que l'approche Strings.Replacer.

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)
}
Copier après la connexion

Exemple de sortie :

File /data/test.txt has error 666
Copier après la connexion

Indices d'arguments explicites

fmt.Sprintf() prend en charge les indices d'arguments explicites, vous permettant de répéter le même index plusieurs fois pour remplacer le même paramètre. Apprenez-en plus sur cette technique dans la question connexe "Remplacer toutes les variables dans Sprintf par la même variable."

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal