首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板