当前位置: 首页 > 面试题库 >

去模板删除范围循环中的最后一个逗号

万俟皓
2023-03-14
问题内容

我有这样的代码:

package main

import (
    "text/template"
    "os"
)

func main() {
    type Map map[string]string
    m := Map {
        "a": "b",
        "c": "d",
    }
    const temp = `{{range $key, $value := $}}key:{{$key}} value:{{$value}},{{end}}`
    t := template.Must(template.New("example").Parse(temp))
    t.Execute(os.Stdout, m)
}

它会输出:

键:a值:b,键:c值:d,

但我想要这样的东西:

键:a值:b,键:c值:d

我不需要最后一个逗号,如何删除它。我在这里找到了用于循环数组的解决方案:https : //groups.google.com/d/msg/golang-
nuts/XBScetK-guk/Bh7ZFz6R3wQJ
,但是我无法获取地图索引。


问题答案:

这是使用模板函数编写逗号分隔的键/值对的方法。

声明一个函数,该函数返回递增并返回计数器的函数:

func counter() func() int {
    i := -1
    return func() int {
        i++
        return i
    }
}

将此功能添加到模板中:

t := template.Must(template.New("example").Funcs(template.FuncMap{"counter": counter}).Parse(temp))

像这样在模板中使用它:

    {{$c := counter}}{{range $key, $value := $}}{{if call $c}}, {{end}}key:{{$key}} value:{{$value}}{{end}}

该模板将分隔符写在键值对之前,而不是写在对之后。

计数器在循环之前创建,并在每次循环中递增。第一次不通过循环写入分隔符。

在操场上跑步。

可以通过将if语句移至Go代码来简化模板中的逻辑:

func separator(s string) func() string {
    i := -1
    return func() string {
        i++
        if i == 0 {
            return ""
        }
        return s
    }
}

将功能添加到模板:

t := template.Must(template.New("example").Funcs(template.FuncMap{"separator": separator}).Parse(temp))

像这样使用它:

{{$s := separator ", "}}{{range $key, $value := $}}{{call $s}}key:{{$key}} value:{{$value}}{{end}}

在操场上跑。



 类似资料:
  • 问题内容: 给定模板: 这可以输出: 但是,如果我要输出: 我需要知道哪个是上述范围内的最后一个元素。 我可以设置一个变量,该变量保留数组的长度,但是始终为3,并且上面的值永远只能为2。而且,根据我所见,您无法在模板中执行算术运算。 是否可以检测模板范围内的最后一个值?干杯。 问题答案: 这可能不是最优雅的解决方案,但却是我能找到的最好的解决方案: http://play.golang.org/p

  • 问题内容: 我在SQL表中有一个文本备注字段,如果它是逗号,则需要删除该字段中的最后一个字符。 因此,例如,如果我有这些行,则需要从第2行和第4行中删除逗号。 输出为: 有任何想法吗? 问题答案: 使用和: 首先,您希望您的数据摆脱前导和尾随空格。然后检查第一个字符是否为。如果是的话,将其删除,否则什么也不做。然后又回来了。您可以使用删除第一个字符。 SQL小提琴

  • 很抱歉标题不好,不知道该怎么写。无论如何,我正在使用ANTLR生成一个解析树。我正在尝试解析函数参数,这在某种程度上是可行的,但有一些事情我想更改,但我不确定如何更改。 这是我目前的设置: 这很好,很有效。但当我输入时说 它给我一个错误,一个我更愿意改变的结果。错误是它希望每个参数后面都有一个逗号,所以

  • 嗨,我刚刚开始用巨蟒和龙卷风以及mongodb进行实验(我是新手)。我写了一个简单的get函数来获取我的mongob中的所有值,并以JSON格式返回。问题是,当我尝试将输出写成JSON字符串时,我会在集合的最后一条记录后面得到一个逗号(,)。 我的输出就像 有谁能告诉我,我怎样才能去掉最后一条记录后面的逗号(,),因为这个逗号,我得到了一个格式错误的JSON字符串 我尝试过使用json转储 将输出

  • 问题内容: 我有一个带有这种数据的mysql表 现在我有成千上万的这样的行。我希望对数据进行某种处理,使其看起来像: 是否有可能通过mysql或我必须手动执行。 问题答案: 您可以使用 : 您可以在这里阅读更多内容。 和更新语句: 您需要用表名和列替换的地方需要更新。

  • 给定max number和range number,我希望打印出以下内容,但尽可能简短。我不知道这是否可以通过IntStream实现。 输入:max=36(或任意数)范围=10(或任意数) 输出:0-910-1920-2930-35 我的代码: