Как называется этот вызов? - PullRequest
0 голосов
/ 18 декабря 2018

В шаблонах Hugo я знаю, что вы можете вызывать функцию, используя function param:

{{ singularize "cats" }}

, но в документации я также вижу, что вы также можете сделать:

{{ "cats" | singularize }}

Я никогда не сталкивался с таким способом вызова функций (внутри таких языков, как Ruby / Python).Это специфично для Го или просто для Гуго?Как называется этот способ вызова функции?Кроме того, вы можете сделать это, если у вас есть более 1 тип аргумента?

1 Ответ

0 голосов
/ 18 декабря 2018

Это особенность движка шаблонов Go, хотя это не новая идея, если вы использовали системы Unix, вы можете сделать то же самое в командах оболочки (например, ls |more).

Этоназывается "цепочкой": вы указываете последовательность команд, и выходные данные каждой из них используются в качестве входных данных следующей в цепочке.

Это задокументировано в text/template:

Конвейер может быть «прикован» разделением последовательности команд с символами конвейера '|'.В цепочечном конвейере результат каждой команды передается как последний аргумент следующей команды.Результатом последней команды в конвейере является значение конвейера.

Механизм шаблонов Go позволяет регистрировать и вызывать функции и методы только с одним возвращаемым значением;или 2 возвращаемых значения, второе из которых должно иметь тип error (который проверяется, чтобы определить, считается ли вызов успешным, и ошибки, отличные от nil, завершают выполнение шаблона с ошибкой).Таким образом, вы не можете объединять команды, имеющие несколько возвращаемых значений, и вы не можете указать кортежи для передачи нескольких значений в функции, имеющие несколько параметров.

Подробнее о конвейерах см. конвейеры механизма шаблонов golang

...