ホームページ >バックエンド開発 >Golang >Go テンプレートで長さが等しくない複数の配列を同時に反復処理する方法は?

Go テンプレートで長さが等しくない複数の配列を同時に反復処理する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 07:58:10130ブラウズ

How to Iterate Over Multiple Arrays of Unequal Lengths Simultaneously in Go Templates?

Go テンプレートを使用した複数の配列の同時反復

はじめに

Go テンプレートでは、複数の配列を同時に反復する必要がよくあります。これは、特に配列の長さが異なる場合や、簡単に再構築できない場合に困難になる可能性があります。この課題を克服し、複数の配列を効率的に反復処理する方法に関する包括的なガイドを次に示します。

問題ステートメント

次のシナリオを考えてみましょう。

Schedule と という 2 つの構造体があります。 Combo。Schedule には Combo 構造体の配列が含まれます。各コンボを反復処理し、そのサウンド、音量、待機データを HTML ページに表示する必要があります。ただし、配列にはさまざまな長さが含まれており、構造体はプロジェクト内の他の場所で使用されているため変更できません。

解決策

この問題を解決するには、「マルチレンジ」を使用できます。ループ手法。これにより、複数の配列を同時に反復処理できます。方法は次のとおりです:

{{range .Schedule.Combos}}
<div class="container">
    <div class="row">
        <div class="card mt-2 ml-2">
            <div class="card-body">
                <h5 class="card-title">
                    <strong>Timing</strong>
                </h5>
                <h5 class="card-text">
                    Play every {{.Every}} mins
                </h5>
                <h5 class="card-text">
                    From time {{TimeOfDayToString .From}}
                </h5>
                <h5 class="card-text">
                    Until {{TimeOfDayToString .Until}}
                </h5>
            </div>
        </div>
        <div class="col">
            <div class="card mt-2">
                <div class="card-body">
                    <h5 class="card-title">
                        <strong>Sounds</strong>
                    </h5>
                    {{ $volumes := .Volumes }}
                    {{ $waits := .Waits }}
                    {{range $index,$sound := .Sounds }}
                        <h5 class="card-text">
                            Sound {{.}}
                            Volume {{index $volumes $index}}
                            Wait {{index $waits $index}}
                        </h5>
                    {{end}}
                </div>
            </div>
        </div>
    </div>
</div>
{{end}}

説明

上記のテンプレートでは:

  • 外側の範囲ループを使用して Schedule.Combos 配列を反復処理します。
  • Volumes 配列と Waits 配列にアクセスするには、2 つの新しい変数 $volumes と $waits を作成します。
  • 次に、内部範囲ループを使用して Sounds 配列を反復し、そのループ内で、次を使用して適切なインデックスで Volumes 配列と Waits 配列にアクセスします。インデックス関数。

以上がGo テンプレートで長さが等しくない複数の配列を同時に反復処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。