fmt.Sprintf で同じパラメータを効率的に複数回参照するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-09 05:58:02
オリジナル
692 人が閲覧しました

How Can I Efficiently Reference the Same Parameter Multiple Times in fmt.Sprintf?

fmt.Sprintf で同じパラメータを効率的に参照する

fmt.Sprintf を使用する場合、次のことが必要な状況に遭遇することがよくあります。フォーマット文字列内で同じパラメータを複数回参照します。パラメータの複製は簡単そうに見えますが、効率が悪く、冗長なコードが発生する可能性があります。

解決策: 明示的な引数インデックスの利用

この問題に対処するために、fmt.Sprintf は以下を提供します。これは「明示的な引数インデックス付け」として知られる解決策です。この手法を使用すると、フォーマット文字列内のインデックスによって特定の引数を参照できます。書式設定動詞の直前に書式指定子 [n] を使用すると、どの引数を書式設定するかを指定できます。

たとえば、次のコードを考えてみましょう。

package main

import "fmt"

func main() {
    v := "X"

    // Use explicit argument indexing to reference v four times
    fmt.Printf(
        `CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v);
CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v);`,
        v, v, v, v,
    )
}
ログイン後にコピー

この例では、 v を 4 回渡す代わりに、フォーマット文字列内で [1]v を使用します。これにより、最初の引数が 4 回事実上参照されます。結果は、簡潔で効率的なフォーマット文字列になります。

CREATE TABLE share_X PARTITION OF share FOR VALUES IN (X);
CREATE TABLE nearby_X PARTITION OF nearby FOR VALUES IN (X);
ログイン後にコピー

明示的な引数のインデックス作成の利点

明示的な引数のインデックス作成を使用すると、次のような利点があります。

  • コードの重複が減り、よりクリーンで保守性が向上しました。コード。
  • 引数の不必要なコピーを回避することでパフォーマンスが向上しました。
  • どの引数をフォーマットするかを動的に指定できるようにすることで柔軟性が向上しました。

結論

fmt.Sprintf の明示的な引数インデックス付けは、効率的で柔軟な方法を提供しますフォーマット文字列内で同じパラメータを複数回参照します。この手法はコードを簡素化するだけでなくパフォーマンスも向上させるため、Go で文字列の書式設定を操作するための貴重なツールになります。

以上がfmt.Sprintf で同じパラメータを効率的に複数回参照するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート