Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 使用golang模板打印以逗号和“分隔的列表”;或;_Templates_Go - Fatal编程技术网

Templates 使用golang模板打印以逗号和“分隔的列表”;或;

Templates 使用golang模板打印以逗号和“分隔的列表”;或;,templates,go,Templates,Go,stackoverflow的其他部分已经讨论过,您可以打印一个以逗号分隔的列表,如下所示: {{ range $index, $element := .TeamMembers}} {{if $index}},{{end}} {{$element.Name}} {{end}} 当您需要与最后一项不同的列表分隔符以包含“或”时,是否有一个简单的解决方案: 例如,这允许创建格式化句子,例如: The members of this team are Bob, Jane, and Mi

stackoverflow的其他部分已经讨论过,您可以打印一个以逗号分隔的列表,如下所示:

{{ range $index, $element := .TeamMembers}}
    {{if $index}},{{end}}
    {{$element.Name}}
{{end}}
当您需要与最后一项不同的列表分隔符以包含“或”时,是否有一个简单的解决方案:

例如,这允许创建格式化句子,例如:

The members of this team are Bob, Jane, and Mike.
我能编制的任何模板代码最终都非常冗长和复杂。

要从列表中“创建正确的英语格式句子”,请使用函数

你的复数例子是

The members of this team are Bob, Jane, and Mike. 这个队的成员是鲍勃、简和迈克。 列表中只有一个元素的单数示例是什么?比如说,

The only member of this team is Bob. There are no members of this team. 这个队唯一的成员是鲍勃。 当列表中没有元素时,您的空示例是什么?比如说,

The only member of this team is Bob. There are no members of this team. 这个团队没有成员。 从邮件合并中创建合适的英语句子和段落是很困难的

text/template
,与其他一些模板系统一样,不适合直接在中编程;它只是提供了一种更好的方法,可以将数据和函数与标记缝合在一起,如果不够,您需要编写其他表示代码。您可以编写一个
yourapp/template
模块,导出一个版本的
New()
,调用
Funcs()
来添加您使用的常用函数

(您可能会发现,除了这些功能,Django还可以使用更多的功能;例如,Django提供了复数、格式化、i18n等功能,人们仍然经常扩展这些功能。)


这还导出了“conjoin”和“isLast”函数,您可以在一种详细的构造中使用它,在最后一次遍历循环时以不同的方式执行一些任意操作。

您是否考虑过将逻辑移出模板并通过字符串属性公开它?以防您想查看其他模板引擎的go;我只是举了一个例子,说明如何在pongo2中完成这项任务:@SimonWhitehead这当然是一个选项。不过,如果可能的话,我不想编写代码来处理“查看/演示”代码,以应对模板库的限制。似乎您可以编写一个函数来进行连接并通过添加--我有类似的功能,可以在其他语言中生成类似的列表。请不要挂断英语部分。我的问题是如何生成一个逗号分隔的列表,其中最后一项有一个“或”。不过,我想他回答了这个问题。使用函数。