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