En Python, vous pouvez utiliser string.format pour insérer des valeurs dans des chaînes avec des espaces réservés comme celui-ci :
"File {file} had error {error}".format(file=myfile, error=err)
Go a une fonction équivalente appelée Sprintf, qui fonctionne de manière similaire way:
fmt.Sprintf("File %s had error %s", myfile, err)
Cependant, Sprintf a une limitation : il nécessite que l'ordre des paramètres dans la chaîne de format corresponde à l'ordre des arguments. Cela peut poser un problème pour l'internationalisation (I18N), où l'ordre des espaces réservés peut varier en fonction de la langue.
Go fournit une alternative plus flexible à Sprintf appelée texte/modèle. Il permet plus de contrôle sur le formatage, y compris la possibilité de spécifier l'ordre des espaces réservés :
package main import ( "bytes" "text/template" "os" ) func main() { type Params struct { File string Error string } var msg bytes.Buffer params := &Params{ File: "abc", Error: "def", } tmpl, _ := template.New("errmsg").Parse("File {{.File}} has error {{.Error}}") tmpl.Execute(&msg, params) msg.WriteTo(os.Stdout) }
Cette approche basée sur un modèle permet une plus grande flexibilité et un plus grand contrôle sur le formatage de la chaîne.
Le type strings.Replacer peut être utilisé pour implémenter un formateur qui permet des espaces réservés avec des noms personnalisés :
package main import ( "fmt" "strings" ) 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)) }
Cette approche est simple et simple à utiliser.
Une autre option consiste à utiliser des indices d'argument explicites dans la chaîne de format, permettant aux espaces réservés d'être réutilisés plusieurs fois. fois :
fmt.Printf("File %[1]s had error %[1]s", myfile, err)
Cette approche est moins polyvalente que les précédentes mais peut être utile pour des cas simples.
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!