How to Go wrong
1.68K subscribers
12 photos
1 video
230 links
Download Telegram
Если вы всегда хотели написать игру на Dreamcast (крутая была приставка!), но не знали как: https://github.com/drpaneas/libgodc
👍4
Если кто-нибудь опять будет вам доказывать, что go.sum — это lockfile, просто киньте им https://words.filippo.io/gosum/
👍16
Поводов для шуток у Растофчан становится всё меньше, а поводов для ужаса у нас — всё больше: https://github.com/golang/go/issues/77273

UPD: Ладно, прочитал — всё весьма хорошо: пересечения с интерфейсами нет, рефлексии нет, чисто синтаксический сахар над функциями. Что интересно — сейчас нет 👎 вообще.
👍7👏2😢2
Интересная статья про добавление методов с реализацией по-умолчанию в интерфейсы. Если вы сразу подумали про встраивание – да, статья про это, но с трюком с alias’аом и занимательными деталями реализации.

https://mcyoung.xyz/2025/08/25/go-default-methods/
👍4
Запускаете go fix на свой код, чтобы LLM учились на хорошем: https://go.dev/blog/gofix
🤣11👍3
Как использовать отчёт об уязвимости своего пакета для рекламы более хорошего сканера (govulncheck) — мастер-класс от Filippo Valsorda: https://github.com/advisories/GHSA-fw7p-63qq-7hpr
🤣3
Не прошло и… всего восьми лет, как proposal про const решили отклонить: https://github.com/golang/go/issues/27975#issuecomment-4000712203 Мир изменился, мы изменились, уже даже автор не считает предложение таким уж нужным – и только команда Go верна себе. 😁
👍5😢2
Поддержку генерации UUID уже скоро завезут в стандартную библиотеку. В полном соответствии с законом тривиальности Паркинсона (a.k.a. bike-shedding), сейчас там полыхает драма. 😁
🤣6👍1
Весь свой выходной день делаю одну штуку, связанную со сравнением значений разными способами (почти как 4 года назад), перечитываю спеку языка раз за разом. И вдруг заметил такое бревно в глазу языке, что теперь не могу развидеть.

В спеке есть понятия comparable и strictly comparable: «The equality operators == and != apply to operands of comparable types. The ordering operators <, <=, >, and >= apply to operands of ordered types». Ordered операторы применяются к ordered типам – всё нормально. А вот equality операторы применяются к comparable типам – используется другое слово, как-то немного странно, но сойдёт.

Но дальше хуже. Есть в стандартной библиотеке пакет cmp, название которого явно происходит от слова compare, и название функции Compare говорит о том же. Что должна делать это функция? Если comparable типы – это про equality операторы, то, по идее, она должна просто (может, с поправкой на NaN) использовать ==. Но нет, она использует ordered операторы и типы.

Пошёл смотреть почему же нет cmp.Equal. И это просто портал в ад:


Equal([2]float64{nan, 456}, [2]float64{123, nan}) // true


Какая же мораль? Как обычно, NaN всё портит. Go – не такой простой язык, как кажется (никакой язык не такой простой, как кажется, но мы же тут про Go), но английский – ещё сложнее. А мне, видимо, надо отдыхать в выходной день без чтения спеки.
5👏5👍1🤔1
Не прошло и 11-и лет (а только 10,5): https://github.com/golang/go/issues/12854#issuecomment-4256916067 Осталось 9 месяцев до релиза дотерпеть.
Вообще, интересный тренд, когда добираются до всё более и более старых proposal’ов.
👍18🤔2
В продолжение темы выноса всякого полезного кода из FerretDB: https://github.com/AlekSi/xfail
Очень простоя библиотека для ожидаемо падающих тестов проверяющая, что они всё ещё падают.
Как обычно, ставьте звёзды 😁️
1👍9🤣1