Hacker News Digest

Тег: #goroutines

Постов: 2

Go's Sweet 16 (go.dev) 🔥 Горячее 💬 Длинная дискуссия

by 0xedb • 14 ноября 2025 г. в 22:33 • 277 points

ОригиналHN

#go#python#java#goroutines#gofmt#golangci-lint#google

Комментарии (210)

  • Go хвалят за простоту обучения и быструю продуктивность, особенно разработчикам, переходящим с Python или Java.
  • Стандартизированные инструменты (gofmt, golangci-lint) и модули обеспечивают единообразие кодовых баз и удобство работы.
  • Ключевые преимущества: производительность, конкурентность (goroutines), быстрая компиляция и портативные бинарные файлы.
  • Основные пожелания к улучшению: встроенная проверка на nil, sum types с исчерпывающими проверками и функциональные возможности (иммутабельность, итераторы).
  • Исторический казус: язык Go! существовал раньше, но был вытеснен Google, что вызвало споры в сообществе.

Go subtleties (harrisoncramer.me)

Статья представляет собой сборник 15 тонкостей и малоизвестных возможностей языка Go, собранных автором за год работы с языком. Начиная с Go 1.22, можно использовать range с целыми числами для простого создания циклов. Интересно, что оператор ~ позволяет ограничивать универсальные типы, что полезно для типизированных констант. Пакет embed позволяет встраивать файлы прямо в бинарник, упрощая развертывание. Однако есть и подводные камни: len() со строками возвращает количество байтов, а не символов, что может привести к неожиданным результатам при работе с Unicode.

Особенно коварна работа с nil-интерфейсами: даже если значение nil, тип переменной остается ненулевым интерфейсом, что делает проверку a == nil ложной. Это может серьезно затруднить отладку кода, возвращающего интерфейсы. Также стоит отметить возможность переименования целых пакетов через LSP и индексированную строковую интерполяцию для уменьшения повторений. Функция time.After в сочетании с select предоставляет элегантный способ установки таймаутов для горутин.

by darccio • 13 октября 2025 г. в 07:42 • 191 points

ОригиналHN

#go#golang#nil#interfaces#unicode#goroutines#generics#error-handling#string-interpolation#lsp

Комментарии (144)

  • Go-разработчики обсуждают, что язык не даёт уверенности в надёжности кода из-за непредсказуемого поведения nil и интерфейсов, а также отсутствия нормального обработчика ошибок.
  • Сообщество отмечает, что вместо удобства чтения кода ради скорости компиляции выбрали неинтуитивную интерполяцию строк, что делает отладку тяжелее.
  • Разработчики делятся личными историями о том, как нулевые указатели и интерфейсы ведут себя непредсказуемо, и это продолжает подстерегать даже опытных разработчиков.
  • Обсуждение также затрагивает, что Go в целом поощряет писать простой код без изощрённых абстракций, что ведёт к быстрому и легкому ПО, но в то же время лишает разработчика выразительных средств.
  • Некоторые участники признают, что отсутствие обобщённых дженериков до недавнего времени и отсутствие перечислений кроме как iota и error в качестве встроенных типов делает язык менее выразителен, чем он мог бы быть.