我有这样的代码:
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 我的代码: