In Go templates, the need often arises to iterate over multiple arrays simultaneously. This can be a challenge, especially when the arrays have different lengths or cannot be easily restructured. Here's a comprehensive guide on how to overcome this challenge and efficiently iterate over multiple arrays together.
Consider the following scenario:
You have two structs, Schedule and Combo, where Schedule contains an array of Combo structs. You need to iterate over each Combo and display its Sounds, Volumes, and Waits data on an HTML page. However, the arrays contain varying lengths, and you cannot modify the structs as they are used elsewhere in the project.
To solve this problem, we can use a "multi-range" looping technique, which allows us to iterate over multiple arrays simultaneously. Here's how:
{{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}}
In the above template:
The above is the detailed content of How to Iterate Over Multiple Arrays of Unequal Lengths Simultaneously in Go Templates?. For more information, please follow other related articles on the PHP Chinese website!