为了账号安全,请及时绑定邮箱和手机立即绑定

Google Go文本模板中范围的最后一个元素的特殊情况处理

Google Go文本模板中范围的最后一个元素的特殊情况处理

Go
qq_笑_17 2021-04-30 18:00:00
我正在尝试使用go的模板系统编写一个像这样的字符串:(p1,p2,p3),其中p1,p2,...来自程序中的数组。我的问题是如何为最后一个(或第一个)元素正确放置逗号。我的非工作版本输出(p1,p2,p3,)如下所示:package mainimport "text/template"import "os"func main() {     ip := []string{"p1", "p2", "p3"}    temp := template.New("myTemplate")    temp,_ = temp.Parse(paramList)    temp.Execute(os.Stdout, ip)}const paramList = `{{ $i := . }}({{ range $i }}{{ . }}, {{end}})`到目前为止,我的最佳线索是在以下语句中的http://golang.org/pkg/text/template/中找到:如果“范围”操作初始化变量,则将变量设置为迭代的连续元素。另外,“范围”可以声明两个变量,以逗号分隔:$index, $element := pipeline在这种情况下,$ index和$ element分别设置为数组/切片索引或映射键和元素的连续值。请注意,如果只有一个变量,则会为其分配元素;否则,将为它分配元素。这与Go range子句中的约定相反。建议在哪里索引这表明可以在迭代中获得索引,但我只是不知道声明两个变量的范围是什么意思,以及这些变量在模板中应声明的位置。
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

请从go-nuts邮件列表中查看此示例。该技巧的一个关键是模板if不同于Go语言if。模板可以测试零值,这与需要布尔值的Go语言不同。然后{{if $index}},{{end}},神奇的地方是$ index除了在赋值中的出现外无需声明。


查看完整回答
反对 回复 2021-05-10
  • 1 回答
  • 0 关注
  • 286 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信