Это особенность движка шаблонов Go, хотя это не новая идея, если вы использовали системы Unix, вы можете сделать то же самое в командах оболочки (например, ls |more
).
Этоназывается "цепочкой": вы указываете последовательность команд, и выходные данные каждой из них используются в качестве входных данных следующей в цепочке.
Это задокументировано в text/template
:
Конвейер может быть «прикован» разделением последовательности команд с символами конвейера '|'.В цепочечном конвейере результат каждой команды передается как последний аргумент следующей команды.Результатом последней команды в конвейере является значение конвейера.
Механизм шаблонов Go позволяет регистрировать и вызывать функции и методы только с одним возвращаемым значением;или 2 возвращаемых значения, второе из которых должно иметь тип error
(который проверяется, чтобы определить, считается ли вызов успешным, и ошибки, отличные от nil
, завершают выполнение шаблона с ошибкой).Таким образом, вы не можете объединять команды, имеющие несколько возвращаемых значений, и вы не можете указать кортежи для передачи нескольких значений в функции, имеющие несколько параметров.
Подробнее о конвейерах см. конвейеры механизма шаблонов golang