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

如何在 Go 模板中同時迭代多個陣列?

Linda Hamilton
發布: 2024-12-18 18:01:17
原創
806 人瀏覽過

How to Iterate Over Multiple Arrays Simultaneously in Go Templates?

Go 範本:同時迭代多個陣列

在開發專案時,您可能會遇到需要同時迭代多個陣列的情況去模板。當您具有如下所示的資料結構並要求將這些數組中的每個元素分組到輸出中時,就會發生這種情況。

type Schedule struct {
    Description   string
    ControlNights int
    PlayNights    int
    StartDay      int
    Combos        []Combo
}

type Combo struct {
    From    time.Time
    Every   int
    Until   time.Time
    Sounds  []string
    Volumes []int
    Waits   []int
}
登入後複製

迭代組合

要單獨顯示每個組合的數據,您可以使用範圍循環迭代 Schedule.Combos 陣列。這將迭代每個組合。但是,這不足以顯示您所需的數據。

將數組組合成行

將不同數組中的資料分組到行中,其中每行包含來自聲音的資料、捲和等待數組,您可以使用動態模板。此技術可讓您操作和修改範本本身內的資料。

用於分組的動態模板

考慮以下模板:

{{ range .Schedule.Combos }}
<div class="container">
    <div class="row">
        <div class="col">
            <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>
        <div class="col">
            <div class="card mt-2">
                <div class="card-body">
                    <h5 class="card-title"><strong>Sounds</strong></h5>
                    {{ range .Sounds }}
                    <h5 class="card-text">Sound {{.}}</h5>
                    {{ end }}
                </div>
            </div>
        </div>
登入後複製

要將聲音、音量和等待分組在一起,您可以建立一個新的模板變數來組合所有三個陣列。

{{ $mergedArrays := .Sounds, .Volumes, .Waits }}
登入後複製

迭代組合數組

使用可用的組合數組,您可以使用嵌套循環迭代它們:

{{ range $index, $mergedArray := $mergedArrays }}
    {{ $sound := $mergedArray[0] }}
    {{ $volume := $mergedArray[1] }}
    {{ $wait := $mergedArray[2] }}
    <li>{{ $sound }} - {{ $volume }} - {{ $wait }}</li>
{{ end }}
登入後複製

在此巢狀循環中,您存取組合數組的各個元素並顯示它們

這種方法可讓您將聲音、音量和等待數組中的資料分組到所需的行中。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板