Sprintf を使用した書式設定された文字列の変数値の複製
Go では、fmt.Sprintf() により、次のプレースホルダーを使用して文字列の書式設定が可能になります。指定された値に置き換えられます。通常、各プレースホルダーに一意の値を割り当てますが、多くの場合、すべてのプレースホルダーを同じ変数に置き換えることが望ましいです。
明示的な引数のインデックス付け
これを実現するには、fmt.Sprintf () は明示的な引数のインデックス付けを利用します。フォーマット文字列内で、フォーマット動詞の前に [n] を置くと、n 番目の引数 (1 からインデックス付け) がデフォルトの昇順シーケンスではなく確実にフォーマットされます。同様に、幅または精度の * の前に配置された [n] は、指定された値を保持する引数を示します。
使用例
質問に示されている例を考えてみましょう。
val := "foo" s := fmt.Sprintf("%v in %v is %v", val)
すべてのプレースホルダーにわたって val 変数を複製するには、フォーマット文字列を次のように変更します。
s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val)
これにより、目的の出力が得られます。
"foo in foo is foo"
簡略化された表記
最初の明示的な引数のインデックスは次のようにすることができることに注意してください。デフォルトなので省略1:
s := fmt.Sprintf("%v in %[1]v is %[1]v", val)
結論
明示的な引数のインデックス付けを活用することで、fmt.Sprintf() を利用して、フォーマットされたすべてのプレースホルダーにわたって単一の変数値を複製できます。文字列を使用して、特定のシナリオに簡潔で効率的なソリューションを提供します。
以上がGo の fmt.Sprintf() で複数のプレースホルダーにわたって 1 つの変数を繰り返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。