Обновлено:

Калькулятор последовательности чисел

Когда в шаблонах Hugo нужно сгенерировать ряд чисел – для создания списка, цикла или математических операций – используется функция seq. Она возвращает массив (slice) целых чисел по заданным правилам. Это мощный инструмент для автоматизации, который заменяет ручное перечисление значений.

Как работает функция seq в Hugo?

Функция seq (или её полное имя collections.Seq) – это встроенная функция Hugo для создания последовательности целых чисел. Она доступна в любой части шаблона. Основная идея: задать начало, конец и шаг, и получить готовый список чисел. gohugo.io

Синтаксис имеет три формы:

  1. seq LAST – создаёт последовательность от 1 до указанного числа LAST. Например, seq 5 вернет [1 2 3 4 5].
  2. seq FIRST LAST – генерирует числа от FIRST до LAST. Пример: seq 0 4 даст [0 1 2 3 4].
  3. seq FIRST INCREMENT LAST – позволяет задать шаг между числами. К примеру, seq 2 5 17 создаст ряд [2 7 12 17], где каждое следующее значение увеличивается на 5.

Результат всегда является списком целых чисел ([]int), который можно сразу использовать в тегах range или других функциях.

Параметры последовательности
Первое число в последовательности. Для режима seq LAST оставьте 1. Разница между соседними числами. По умолчанию 1. Может быть отрицательным. Последнее число в последовательности (включительно).
Количество элементов
Сумма элементов

Калькулятор выше позволяет быстро проверить работу функции: задайте начальное значение, шаг и конечное число – и получите готовую последовательность. Именно такой массив чисел возвращает 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 элементов. Это ограничение установлено для предотвращения чрезмерного использования памяти.

Когда нужен калькулятор последовательности чисел?

Интерактивный калькулятор полезен в двух случаях:

  1. Тестирование логики перед внедрением в шаблон. Можно быстро проверить, какой ряд чисел получится при разных параметрах, особенно при сложных шагах или отрицательных значениях.
  2. Обучение и понимание функции. Видя результат сразу, легче освоить синтаксис 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 для циклической обработки каждого числа. Например, можно создать список пунктов или выполнить вычисления для каждого элемента ряда.

  1. Калькулятор даты окончания в Hugo: управляем сроком действия контента
  2. Генератор ника – придумать никнейм онлайн за секунды
  3. Расход топлива в час: формула, калькулятор и нормы
  4. Расход топлива на часы работы: формулы и нормы
  5. Расход топлива на генераторе: расчёт и нормы
  6. Рандомайзер от 1 до 3: генератор чисел онлайн