登录
首页 >  Golang >  Go问答

同时迭代多个数组的Go模板

来源:stackoverflow

时间:2024-02-05 21:54:21 451浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《同时迭代多个数组的Go模板》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我已经阅读了很多与 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
}

我需要在 html 页面上显示这些数据。所以我需要迭代每个 combo。我可以做到这一点,但我需要将声音、音量和等待放在一起,即声音 x 音量 y 等待 z。其中 x、y 和 z 是 sounds、volumes 和 waits 数组中的值。这些数组可以是 >= 1 的任意长度,但它们都具有相同的长度。

我希望它看起来像这样:

我已经尝试过这个:

{{range .Schedule.Combos}}
            
Timing
Play every {{.Every}} mins
From time {{TimeOfDayToString .From}}
Until {{TimeOfDayToString .Until}}
Sounds
{{range .Sounds}}
Sound {{.}}
{{end}}

这允许我调整声音的范围,但我还需要调整音量并等待(等待播放下一个声音的时间),同时以某种方式......

我想我可以做的是创建一个不同的 combo 结构并将其传递给我的 html 模板,但我希望如果有一种方法可以按原样使用结构来做到这一点,可以避免这种情况。


正确答案


如果您确定这三个数组具有相同数量的元素,那么您可以执行以下操作:

{{ $volumes := .Volumes }}
{{ $waits := .Waits }}
{{range $index,$sound := .Sounds }}

Print Sounds[i] like this: {{$sound}}

Print volumes[i] like this: {{index $volumes $index}}

Print waits[i] like this: {{index $waits $index}}

{{end}}

这应该会给你一个想法。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>