En Python, l'interpolation de chaîne se fait souvent à l'aide de la fonction format(), qui permet d'insérer des valeurs dans un modèle de chaîne. Dans Go, il existe plusieurs façons d'obtenir des fonctionnalités similaires.
L'option la plus simple consiste à utiliser la fonction fmt.Sprintf, qui prend une chaîne de format et un nombre variable de arguments. Les arguments sont insérés dans la chaîne de format dans l'ordre dans lequel ils apparaissent. Par exemple :
fmt.Sprintf("File %s had error %s", myfile, err)
Cependant, cette méthode ne permet pas l'échange de l'ordre des arguments dans la chaîne de format, ce qui est parfois nécessaire à des fins d'internationalisation (I18N).
Go fournit également le package text/template, qui permet une interpolation de chaîne plus complexe. Cependant, cela nécessite l'utilisation d'un modèle, qui peut être plus verbeux que la simple utilisation de fmt.Sprintf.
tmpl, _ := template.New("errmsg").Parse("File {{.File}} has error {{.Error}}") tmpl.Execute(&msg, params)
Pour une solution plus compacte et flexible, pensez à utiliser le type strings.Replacer. Il vous permet de définir un mappage des clés vers les chaînes de remplacement. Les clés peuvent être incluses dans la chaîne de format à l'aide d'accolades, et le remplaçant les remplacera par les chaînes de remplacement correspondantes.
r := strings.NewReplacer("{file}", file, "{error}", err) fmt.Println(r.Replace("File {file} had error {error}"))
Cette méthode permet d'échanger l'ordre des arguments dans la chaîne de format et peut être facilement étendu pour gérer différents types de valeurs.
Enfin, le package fmt de Go prend également en charge les arguments explicites indices, qui peuvent être utilisés plusieurs fois pour référencer le même argument. Cela permet une manière plus concise d'insérer plusieurs fois la même valeur dans une chaîne de format.
fmt.Printf("File %d has error %d\n", 1, 1)
Cette approche offre la plus grande flexibilité en termes de classement et d'insertion de la même valeur plusieurs fois.
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!