首页 > 后端开发 > Golang > 如何避免 Go 文本模板字符串连接中的尾随逗号?

如何避免 Go 文本模板字符串连接中的尾随逗号?

Mary-Kate Olsen
发布: 2024-12-25 15:08:13
原创
238 人浏览过

How to Avoid Trailing Commas in Go Text Template String Concatenation?

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

在 Go 的文本模板系统中,创建诸如“(p1, p2, p3)" 来自数组可能具有挑战性,特别是在最后一个正确放置逗号时

无效尝试

无法删除尾随逗号的一种尝试是:

import (
    "text/template"
    "os"
)

func main() {
    ip := []string{"p1", "p2", "p3"}
    temp := template.New("myTemplate")
    _, _ = temp.Parse(paramList)
    temp.Execute(os.Stdout, ip)
}

const paramList = "{{ $i := . }}({{ range $i }}{{ . }}, {{end}})"
登录后复制

解决方案

这个难题可以通过利用模板 if 语句的特殊语法来解决。与 Go if 语句不同,模板 if 可以测试零值。这允许使用以下技巧:

import (
    "text/template"
    "os"
)

func main() {
    ip := []string{"p1", "p2", "p3"}
    temp := template.New("myTemplate")
    _, _ = temp.Parse(paramList)
    temp.Execute(os.Stdout, ip)
}

const paramList = "{{ $i := . }}({{ range $i }}{{ if $index }},{{end}}{{ . }}{{end}})"
登录后复制

神奇之处在于:

{{ if $index }},{{end}}
登录后复制

$index 变量在范围迭代期间自动分配,用于测试最后一个元素。如果索引非零(意味着不是最后一个元素),则插入逗号。这可确保最后一个元素没有尾随逗号。

以上是如何避免 Go 文本模板字符串连接中的尾随逗号?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板