该调用如何称呼?

时间:2018-12-18 14:13:06

标签: go pipeline hugo go-templates

在Hugo模板内部,我知道您可以使用function param来调用函数:

{{ singularize "cats" }}

但是在文档中,我也看到您也可以这样做:

{{ "cats" | singularize }}

我从未遇到过这种调用函数的方式(在像Ruby / Python之类的内部语言中)。这是Go特定的,还是Hugo特定的?这种调用函数的方式如何称呼?另外,如果您拥有不止一种类型的参数,您可以这样做吗?

1 个答案:

答案 0 :(得分:4)

这是Go模板引擎的功能,尽管这不是一个新主意,但是如果您使用的是Unix系统,则可以在shell命令中进行相同的操作(例如ls |more)。

这称为“链接”:您指定了一个命令序列,每个命令的输出都用作该链中下一个命令的输入。

记录在text/template

  

通过用流水线字符“ |”分隔命令序列,可以“链接”流水线。在链式管道中,每个命令的结果作为以下命令的最后一个参数传递。流水线中最终命令的输出是流水线的值。

Go模板引擎仅允许您注册和调用具有单个返回值的函数和方法。或2个返回值,第二个返回值的类型必须为error(检查该类型以判断调用是否被成功,并且非nil错误将以错误终止模板执行)。因此,您不能链接具有多个返回值的命令,也不能指定元组将多个值传递给具有多个参数的函数。

有关管道的更多信息,请参见golang template engine pipelines