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中文網其他相關文章!