How to Go wrong
1.55K subscribers
11 photos
1 video
190 links
Download Telegram
var m map[string]map[int]bool

v := m["foo"][42]
fmt.Println(v)

v, ok := m["foo"][42]
fmt.Println(v, ok)
How to Go wrong
Что выдаст этот код?
(третий вариант должен быть false, false, false – отредактировать нельзя)
👍4👎2
Getter’ы и setter’ы не нужны, говорили они. Просто делайте структуры с экспортированными полями, говорили они…

https://go.dev/blog/protobuf-opaque

Protobuf Enterprise Edition какой-то.

С другой стороны, ленивое декодирование и не сделать по-другому.

EDIT: Читая обсуждение на Hacker News, наткнулся на https://connectrpc.com/docs/protocol, и, кажется, это то, что надо: совместимость с gRPC без ужасов gRPC-Web, поддержка стриминга (в отличии от Twirp), простота как цель.
🤔10😢2
Всех с наступающим или наступившим Новым годом.
Итоги подводить не буду, но поздравлю всех с тем, что один из старейших багов в спеке Go наконец-то закрыли. После релиза 1.24 наконец-то можно будет нормально говорить про слайсы, мапы или каналы без уродливых объяснений «ну, это как ссылки, только ссылок в Go нет».
👍24
Что более эффективно с точки зрения потребления памяти: map[int64]struct{} или map[int64]bool?
Anonymous Quiz
75%
map[int64]struct{}
10%
map[int64]bool
15%
¯\_(ツ)_/¯
😢21🤔6👏3👍2👎1
Компилятор TypeScript переписывают на Go. Анонс и видео тут, транскрипт ключевой части на Reddit, а на картинке – ответ Anders’а Hejlsberg’а (создателя TypeScript, C#, Delphi и Turbo Pascal’я). Сам ответ вот тут, но потрясающий UI GitHub’а вам его не только скроет, но и будет скрывать при каждом новом ответе – а ответы там появляются часто, потому что у любителей C# и Rust’а там конкретно подгорает.
👏37👍6🤔4
Выступал недавно на митапе Armenia PostgreSQL (который и соорганизовывал – никуда не деться от старых привычек) про использование FerretDB (написанного, напомню, на Go с горутинами/потоками) внутри PostgreSQL (написанного на C с форками). Если фразы в скобках не вызвали у вас ужаса, то вы просто не форкали процессы с тредами 🙂

Видео – тут, слайды – тут, реальный код – вот тут.
4👍24
Писал-писал большой пост про новый testing.B.Loop и как его никто не понимает, но меня опередили:
* https://go.dev/blog/testing-b-loop
* https://github.com/golang/go/issues/73137

Единственное, что не упомянуто, так это то, что эта оптимизация не покрывает testing.PB.Next. Но это не точно.
👍4👏1
Будет официальный SDK для Model Context Protocol’а на Go. Когда-нибудь: https://github.com/orgs/modelcontextprotocol/discussions/224#discussioncomment-12730162
Очень надеюсь, что будет лучше, чем существующие, которые как-будто с JS портированы один-в-один.
👍15