Что нравится и не нравится в Go по сравнению с другими языками
Gogolang developerособенности языкаплюсы и минусысравнение языков
Что проверяют
Есть ли у вас своё мнение и понимаете ли вы компромиссы языка. Ответ «всё нравится» звучит неубедительно.
Как отвечать
Назовите по три пункта с каждой стороны и объясните причину.
Что нравится:
- простота и читаемость: маленькая спецификация, один способ форматирования, чужой код читается сразу. На большой команде это экономит больше, чем любые языковые возможности;
- конкурентность как часть языка: горутины и каналы дешевле потоков, а
contextдаёт единый способ отмены; - инструменты из коробки: сборка в один бинарник, тесты, профилировщик, детектор гонок, форматтер. Ничего не надо выбирать и настраивать;
- быстрая компиляция и предсказуемая производительность.
Что не нравится:
- многословная обработка ошибок:
if err != nilзанимает заметную часть кода, и предложения по улучшению отвергались годами; - отсутствующие значения: нулевое значение вместо
nullспасает не всегда, а указатель по-прежнему может бытьnil; - обобщения появились поздно (1.18) и покрывают не всё: нет методов с параметрами типа, ограничены возможности вывода;
- бедность стандартных абстракций: нет перечислений, нет сумм-типов, из-за чего исчерпывающую проверку вариантов компилятор не делает.
Хорошо звучит вывод: язык осознанно жертвует выразительностью ради того, чтобы код был одинаковым у всех. Для сервисов это чаще плюс, для сложной предметной логики иногда минус.
Где спотыкаются
Отвечают, что всё устраивает: выглядит как отсутствие опыта.
Ругают обработку ошибок, не объясняя, чем она лучше исключений в других случаях.
Жалуются на отсутствие обобщений, не зная, что они давно есть.
Называют минусом отсутствие наследования, не понимая, что композиция здесь замена, а не недостаток.