首頁 >後端開發 >Golang >如何在 Go 模板中同時迭代多個長度不等的陣列?

如何在 Go 模板中同時迭代多個長度不等的陣列?

Susan Sarandon
Susan Sarandon原創
2024-12-03 07:58:10135瀏覽

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

使用 Go 範本同時迭代多個陣列

簡介

在 Go 範本中,常常需要同時迭代多個陣列。這可能是一個挑戰,特別是當數組具有不同長度或無法輕鬆重組時。這是關於如何克服這項挑戰並有效地迭代多個陣列的綜合指南。

問題陳述

考慮以下場景:

您有兩個結構體, Schedule 和Combo,其中 Schedule 包含 Combo 結構陣列。您需要迭代每個 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 數組,我們建立兩個新變數 $volumes 和 $waits,並分配它們分別是 .Volumes 和 .Waits 的值。
  • 然後,我們使用內部範圍循環來迭代 Sounds 數組,並在該循環中,我們使用索引存取適當索引處的 Volumes 和 Waits 數組函數。

以上是如何在 Go 模板中同時迭代多個長度不等的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn