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中文网其他相关文章!