Я знаю, что внутри шаблонов Hugo вы можете вызывать функцию с помощью function param:
{{ singularize "cats" }}
но в документации я также вижу, что вы также можете:
{{ "cats" | singularize }}
Я никогда не сталкивался с таким способом вызова функций (внутри таких языков, как Ruby / Python). Это для Go или просто для Hugo? Как вызывается этот способ вызова функции? Кроме того, можно ли это сделать, если у вас более одного типа аргументов?
Вышеупомянутое упоминается в первом предложении первого раздела собственных шаблонных документов Хьюго: gohugo.io/templates/introduction
Собственно, в шаблонах Django есть похожая функция, называемая фильтрами.

Это особенность механизма шаблонов Go, хотя это не новая идея, если вы использовали системы unix, вы можете делать то же самое в командах оболочки (подумайте, например, о ls |more).
Это называется «объединение в цепочку»: вы указываете последовательность команд, и вывод каждой из них используется в качестве входных данных для следующей в цепочке.
Это задокументировано в text/template:
A pipeline may be "chained" by separating a sequence of commands with pipeline characters '|'. In a chained pipeline, the result of each command is passed as the last argument of the following command. The output of the final command in the pipeline is the value of the pipeline.
Механизм шаблонов Go позволяет регистрировать и вызывать функции и методы только с одним возвращаемым значением; или 2 возвращаемых значения, из которых второе должно иметь тип error (который проверяется, чтобы определить, считается ли вызов успешным, а ошибки, не относящиеся к nil, завершают выполнение шаблона с ошибкой). Таким образом, вы не можете связать команды, которые имеют несколько возвращаемых значений, и вы не можете указать кортежи для передачи нескольких значений функциям, имеющим несколько параметров.
Подробнее о конвейерах см. конвейеры движка шаблонов golang.
Hugo использует стандартную библиотеку шаблонов Go, которая хорошо документирована: golang.org/pkg/html/template