Home > Backend Development > Golang > How to Iterate Over Multiple Arrays of Unequal Lengths Simultaneously in Go Templates?

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

Susan Sarandon
Release: 2024-12-03 07:58:10
Original
181 people have browsed it

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

Iterating Over Multiple Arrays Simultaneously Using Go Templates

Introduction

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.

Problem Statement

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.

Solution

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}}
Copy after login

Explanation

In the above template:

  • We iterate over the Schedule.Combos array using the outer range loop.
  • To access the Volumes and Waits arrays, we create two new variables, $volumes and $waits, and assign them the values of .Volumes and .Waits respectively.
  • We then use the inner range loop to iterate over the Sounds array, and within that loop, we access the Volumes and Waits arrays at the appropriate index using the index function.

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template