TGViewer
Golang Дайджест Golang Дайджест @golang_digest · 13.4K subscribers
Post #349 8.43K
👴 Почему в Go нет тернарного оператора?

https://dburov.com/ru/research/go-ternary

Дмитрий Буров провёл большое исследование на эту старую добрую тему и попросил меня поделиться ей, чтобы собрать мнение сообщества — внизу статьи есть короткий опрос из 4 вопросов.

Вкратце, о чём материал:

- Позиция core-команды Go не менялась с 2009 года: ?: порождает непроницаемо сложные выражения, if-else «бесспорно яснее», языку нужна только одна конструкция управления потоком

- Проблема в том, что эта позиция никогда не подкреплялась реальными данными — только мнением авторов языка. Каждый новый proposal с 2019 года закрывается ссылкой на FAQ без содержательного разбора

- Дмитрий написал статический анализатор и прогнал 4 крупных репозитория: golang/go, kubernetes, terraform, traefik

- Нашёл 22 000+ паттернов, которые однозначно заменяются плоским тернарником (условный return, условное присваивание, раздутый конструктор, inline-выражение)

- От 10% до 16% функций содержат хотя бы один такой паттерн. То есть каждая 6-9 функция

И главный аргумент автора: команда Go запрещает оператор целиком из-за того, что его можно использовать во вложенном виде и получить нечитаемую кашу. Но другие языки давно решили эту проблему иначе — оставили сам оператор, а запретили именно вложенность: в JS через ESLint-правило no-nested-ternary, в C++ через clang-tidy, в PHP 8 вложенный ?: без скобок стал ошибкой компиляции. Go мог бы сделать то же самое через go vet, не лишая разработчиков плоских однострочников.

————

Тема холиварная, поэтому Дмитрию особенно важно собрать мнения — как тех, кто «за», так и тех, кто «против».

Выборка заведомо смещена (сюда придут неравнодушные), но цель не в репрезентативности, а в том, чтобы проверить: совпадают ли представления команды Go о восприятии этих паттернов с тем, что говорят сами разработчики.

В общем, предлагаю ознакомиться и выразить своё мнение.

#article #research
Dburov Тернарный оператор в Go – почему в языке нет «?:» и почему это может быть ошибкой Эмпирическое исследование: статический анализ публичных Go-репозиториев, разбор аргументов команды Go и proposal по добавлению условного выражения в язык.
  • ❤ 29
  • 🔥 14
  • 🤔 11
  • 👍 8
More from @golang_digest
  1. Sep 16, 2026Post #363
  2. Sep 15, 2026Дописал самый большой кусок статьи про Go 1.27 — раздел про постквантовые подписи. В 1.27…
  3. Sep 13, 2026Post #361
  4. Sep 13, 2026Post #360
  5. Aug 27, 2026😐 Ультимативный разбор... Go 1.27? Честно, не знаю зачем я это сделал, но я сделал.. Ну п…
  6. Aug 19, 2026Вышел Go 1.27 https://go.dev/doc/go1.27 Подробный интерактивный разбор ещё готовлю, подкас…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →