首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在go模板中转换切片?

如何在go模板中转换切片?
EN

Stack Overflow用户
提问于 2017-11-14 14:19:49
回答 1查看 935关注 0票数 1

我使用康菲通过模板填充文件。

在这个文件中,我希望移动并插入元素列表。此切片包含字符串,如

代码语言:javascript
复制
0=container-1
1=container-2
2=container-3
3=container-4

(实际上,它是我使用split confd函数拆分的一个字符串)。我希望,在每个容器上,能够过滤出容器名称,并在我的容器首先出现之后,将列表移动到具有这些名称的容器。

例如,在container-2上,我希望结果是

代码语言:javascript
复制
2=container-3
3=container-4
0=container-1

如何在confd go模板中做到这一点?我想我知道如何用go (但我不太擅长那种特定的语言),但我找不到如何仅仅使用一个模板.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 16:43:02

如果无法操作模板外部的切片/字符串,如果无法向模板添加自定义函数,则必须在模板内执行此操作。这更详细,但可行。

一种方法是在父循环中嵌套两个循环。父节点将查找您想要省略的容器,此时它将生成两个子循环,其中$i保存要删除的一个索引。然后,第一个子循环可以列出索引大于$i的容器,第二个子循环将列出索引小于$i的容器。

代码语言:javascript
复制
{{range $i, $c := $cons}}
    {{/* find item to be skipped */}}
    {{if (eq $c $.Skip)}}

        {{range $j, $c := $cons}}
            {{/* list items that come after the one to be skipped */}}
            {{if (gt $j $i)}}
                {{$c}}
            {{end}}
        {{end}}

        {{range $j, $c := $cons}}
            {{/* list items that come before the one to be skipped */}}
            {{if (lt $j $i)}}
                {{$c}}
            {{end}}
        {{end}}

    {{end}}
{{end}}

https://play.golang.org/p/lGdExfHAvy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47288067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档