Обновлено:
Калькулятор последовательности чисел
Когда в шаблонах Hugo нужно сгенерировать ряд чисел – для создания списка, цикла или математических операций – используется функция seq. Она возвращает массив (slice) целых чисел по заданным правилам. Это мощный инструмент для автоматизации, который заменяет ручное перечисление значений.
Как работает функция seq в Hugo?
Функция seq (или её полное имя collections.Seq) – это встроенная функция Hugo для создания последовательности целых чисел. Она доступна в любой части шаблона. Основная идея: задать начало, конец и шаг, и получить готовый список чисел. gohugo.io
Синтаксис имеет три формы:
seq LAST– создаёт последовательность от 1 до указанного числа LAST. Например,seq 5вернет[1 2 3 4 5].seq FIRST LAST– генерирует числа от FIRST до LAST. Пример:seq 0 4даст[0 1 2 3 4].seq FIRST INCREMENT LAST– позволяет задать шаг между числами. К примеру,seq 2 5 17создаст ряд[2 7 12 17], где каждое следующее значение увеличивается на 5.
Результат всегда является списком целых чисел ([]int), который можно сразу использовать в тегах range или других функциях.
Калькулятор выше позволяет быстро проверить работу функции: задайте начальное значение, шаг и конечное число – и получите готовую последовательность. Именно такой массив чисел возвращает seq в шаблон Hugo.
Примеры использования seq в шаблонах
Простые примеры из документации Hugo показывают базовый вывод:
{{ seq 2 }}→[1 2]{{ seq 0 2 }}→[0 1 2]{{ seq -2 2 }}→[-2 -1 0 1 2]{{ seq -2 2 2 }}→[-2 0 2]
Но основная сила seq раскрывается в циклах. Например, нужно вычислить произведение чисел от 1 до 4:
{{ $product := 1 }}
{{ range seq 4 }}
{{ $product = mul $product . }}
{{ end }}
{{ $product }} → 24
В этом примере range seq 4 итерируется по массиву [1 2 3 4], и на каждом шаге переменная $product умножается на текущее число (.). В итоге получаем 24.
Также последовательность часто используется для генерации повторяющихся элементов в HTML. Например, создать список <li> с номерами от 1 до 10:
<ul>
{{ range seq 10 }}
<li>Пункт № {{ . }}</li>
{{ end }}
</ul>
Какие параметры можно задать для последовательности?
Функция принимает целые числа (int) в любом сочетании:
- Начальное значение (FIRST). Если указан только один аргумент, начало считается равным 1. Можно задать отрицательное число, например -5.
- Конечное значение (LAST). Последовательность включает это число. Если LAST меньше FIRST при инкременте 1, функция вернет пустой массив.
- Шаг (INCREMENT). Определяет разницу между соседними числами. По умолчанию равен 1. Можно задать отрицательный шаг для создания убывающей последовательности:
seq 5 -1 2даст[5 4 3 2].
Важно помнить ограничение: функция может создать последовательность длиной не более 1 000 000 элементов. Это ограничение установлено для предотвращения чрезмерного использования памяти.
Когда нужен калькулятор последовательности чисел?
Интерактивный калькулятор полезен в двух случаях:
- Тестирование логики перед внедрением в шаблон. Можно быстро проверить, какой ряд чисел получится при разных параметрах, особенно при сложных шагах или отрицательных значениях.
- Обучение и понимание функции. Видя результат сразу, легче освоить синтаксис
seqи понять различия между её формами.
Калькулятор работает по той же логике, что и функция Hugo: он принимает три параметра (начало, шаг, конец) и выводит массив целых чисел. Это позволяет избежать ошибок в шаблонах из-за неверного понимания генерации.
Часто задаваемые вопросы
В чем отличие между seq LAST и seq FIRST LAST?
seq LAST создаёт последовательность от 1 до LAST включительно. seq FIRST LAST начинает с числа FIRST и заканчивает на LAST. Например, seq 3 вернет [1 2 3], а seq 0 3 вернет [0 1 2 3].
Как задать шаг (инкремент) в последовательности?
Для этого используйте синтаксис seq FIRST INCREMENT LAST. Например, seq 0 2 6 создаст последовательность [0 2 4 6], где каждое следующее число увеличивается на 2.
Есть ли ограничение на количество элементов в последовательности?
Функция seq в Hugo ограничена генерацией последовательности длиной до 1 миллиона элементов. Попытка создать более длинный ряд приведет к ошибке.
Можно использовать seq для создания последовательности с отрицательными числами?
Да, функция поддерживает отрицательные значения для первого, последнего числа и инкремента. Пример: seq -3 2 вернет [-3 -2 -1 0 1 2].
Как использовать последовательность чисел в шаблонах Hugo?
Чаще всего seq применяется внутри тега range для циклической обработки каждого числа. Например, можно создать список пунктов или выполнить вычисления для каждого элемента ряда.
Похожие калькуляторы и статьи
- Калькулятор даты окончания в Hugo: управляем сроком действия контента
- Генератор ника – придумать никнейм онлайн за секунды
- Расход топлива в час: формула, калькулятор и нормы
- Расход топлива на часы работы: формулы и нормы
- Расход топлива на генераторе: расчёт и нормы
- Рандомайзер от 1 до 3: генератор чисел онлайн