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
Susan Sarandonoriginal
2024-12-20 02:47:09613parcourir

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))
}

Exemple de sortie :

File /data/test.txt had error file not found

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)
}

Exemple de sortie :

File /data/test.txt has error 666

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!

Déclaration:
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