package utils // CalculateSelectOptionsIndex рассчитывает индекс первой и последней опции для отображения в поле выбора func CalculateSelectOptionsIndex(focus, visibleCount, optionsCount int) (int, int) { //Если количество отображаемых больше, чем есть количество опций на самом деле, //то меняем количество опций для отображения на количество опций. if visibleCount > optionsCount { visibleCount = optionsCount } //Количество объектов сверху и снизу half := visibleCount / 2 //Индекс первой опции для показа в списке start := focus - half //Если индекс меньше 0, то фиксируем его на первой if start < 0 { start = 0 } //Индекс последней опции для показа в списке end := start + visibleCount //Если индекс больше, чем количество опций для вывода, //то фиксируем его на последней опции. //Производим перерасчет индекса первой опции if end > optionsCount { end = optionsCount start = end - visibleCount if start < 0 { start = 0 } } return start, end }