Python では、文字列補間は多くの場合、format() 関数を使用して行われ、これにより値を挿入できます。文字列テンプレート。 Go では、同様の機能を実現する方法がいくつかあります。
最も簡単なオプションは、フォーマット文字列と変数の数値を受け取る fmt.Sprintf 関数を使用することです。引数。引数は、出現する順序でフォーマット文字列に挿入されます。例:
fmt.Sprintf("File %s had error %s", myfile, err)
ただし、このメソッドでは、国際化 (I18N) の目的で必要になる場合がある、フォーマット文字列内の引数の順序の入れ替えは許可されません。
Go は、より複雑な文字列補間を可能にするテキスト/テンプレート パッケージも提供します。ただし、テンプレートを使用する必要があり、単純に fmt.Sprintf.
tmpl, _ := template.New("errmsg").Parse("File {{.File}} has error {{.Error}}") tmpl.Execute(&msg, params)
を使用するよりも冗長になる可能性があります。よりコンパクトで柔軟なソリューションについては、使用を検討してください。 strings.Replacer タイプ。これにより、キーから置換文字列へのマッピングを定義できます。中括弧を使用してキーを書式指定文字列に含めることができ、Replacer はそれらを対応する置換文字列で置き換えます。
r := strings.NewReplacer("{file}", file, "{error}", err) fmt.Println(r.Replace("File {file} had error {error}"))
このメソッドでは、書式指定文字列内の引数の順序を入れ替えることができ、次のようにすることができます。さまざまなタイプの値を処理するために簡単に拡張できます。
最後に、Go のfmt パッケージは、同じ引数を参照するために複数回使用できる明示的な引数インデックスもサポートしています。これにより、同じ値を書式文字列に複数回挿入するより簡潔な方法が可能になります。
fmt.Printf("File %d has error %d\n", 1, 1)
このアプローチは、同じ値を複数回並べて挿入するという点で最も柔軟性が高くなります。
以上がGo で Python の `string.format()` 機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。