在Hugo模板内部,我知道您可以使用function param
来调用函数:
{{ singularize "cats" }}
但是在文档中,我也看到您也可以这样做:
{{ "cats" | singularize }}
我从未遇到过这种调用函数的方式(在像Ruby / Python之类的内部语言中)。这是Go特定的,还是Hugo特定的?这种调用函数的方式如何称呼?另外,如果您拥有不止一种类型的参数,您可以这样做吗?
答案 0 :(得分:4)
这是Go模板引擎的功能,尽管这不是一个新主意,但是如果您使用的是Unix系统,则可以在shell命令中进行相同的操作(例如ls |more
)。
这称为“链接”:您指定了一个命令序列,每个命令的输出都用作该链中下一个命令的输入。
记录在text/template
:
通过用流水线字符“ |”分隔命令序列,可以“链接”流水线。在链式管道中,每个命令的结果作为以下命令的最后一个参数传递。流水线中最终命令的输出是流水线的值。
Go模板引擎仅允许您注册和调用具有单个返回值的函数和方法。或2个返回值,第二个返回值的类型必须为error
(检查该类型以判断调用是否被成功,并且非nil
错误将以错误终止模板执行)。因此,您不能链接具有多个返回值的命令,也不能指定元组将多个值传递给具有多个参数的函数。
有关管道的更多信息,请参见golang template engine pipelines