Владимир Грабко: regexp.MustCompile тоже жестокий. Простите, но вот от нечего делать пытаюсь понять что происходит в вашем коде, но никак не могу, так как не текст кода ужасен, а сама логика работы. А количество потенциальных рутин просто зашкаливает, не, прекрасно понимаю какой должен быть результат выполнения программы, но я бы сделал всё иначе, такой ужас может приснится только в кошмарах, имхо =).
Степан Романов: Извините, не увидел, что вам нужно именно с asArray(). С ним не работает, потому-что вы берете массив значений, и объекты не создаются, поэтому производительность повыше. Так как нет объекта, то и вызывать методы не у кого.
Алексей Воропаев: это неправильно. Мной написанное решение взято из шаблонов yii (FindModel метод).
С другой стороны перехватывать синтаксические ошибки вместе с бизнес-логикой это как минимум не логично, не говоря уже об общих хороших правилах тона.
Oleg Shevelev: Я имею в виду, что использование канала - это очень странное решение и непонятное изначально. Интерфейс Sort используется для совместимости с Heap как показатель единой стандартной библиотекой и сам sort.Sort() не используется.
Лист? Обычный лист как и везде https://golang.org/pkg/container/list/.
Thread safe по-моему в большинстве случаев на плечах кодера.