Python には、カスタム プレースホルダーを使用して文字列をフォーマットするための string.format という便利なメソッドが用意されています。 Go 開発者は、自分たちの言語に同等の機能があるかどうか疑問に思っています。
Go での最も簡単な代替手段は fmt.Sprintf 関数で、これによりフォーマット文字列のパラメータ置換が可能になります。ただし、パラメータの順序の入れ替えはサポートされていません。
Go には、より汎用性の高いアプローチを提供するテキスト/テンプレート パッケージも含まれています。
strings.Replacer 型を利用することで、開発者は独自の書式設定を簡単に作成できますfunction:
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)) }
text/template パッケージを使用すると、もう少し冗長なアプローチでより多くのカスタマイズが可能になります:
package main import ( "fmt" "os" "text/template" ) func main() { file, err := "/data/test.txt", 666 log4("File {{.file}} has error {{.error}}", map[string]interface{}{"file": file, "error": err}) } func log4(format string, p map[string]interface{}) { t := template.Must(template.New("").Parse(format)) t.Execute(os.Stdout, p) }
Go では、同じパラメータを有効にするフォーマット文字列で明示的な引数インデックスを使用できます。
実装の詳細には違いがありますが、Go は Python の string.format に代わるソリューションを提供し、文字列フォーマットのシナリオで柔軟性と効率性の両方を提供します。
以上がPython の `string.format()` に相当する Go はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。