Golang Дайджест
7.76K subscribers
36 photos
1 file
165 links
Самое интересное из мира Go: новости, статьи, проекты, сервисы, изменения в языке и др.

Посты публикуются не часто - только самое важное, с чем я лично ознакомился.

Поэтому можно не мьютить канал =)

Обратная связь: @justskiv
Download Telegram
Серия постов про новый пакет slices от ArdanLabs

В статьях разбираются функции из нового пакета:

- Binary Search
- Clip, Clone, and Compact
- Compare
- Contains, Delete, and Equal

В случае постов ArdanLabs и конкретно от William Kennedy, мои комментарии излишни - он пишет хорошо, интересно, с кучей примеров.

#ardanlabs
Конференция по Go от Podlodka Crew

11 сентября состоится очередная конференция Podlodka Go Crew

Общая тема в этот раз - Highload на Go:

- заглянем под капот устройства памяти
- научимся превентивно находить потенциальные очаги чрезмерной нагрузки
- посмотрим на лучшие практики нагрузочного тестирования
- изучим масштабируемую технологию NATS JetStream для очередей и асинхронной коммуникации

Кроме того, каждый желающий сможет выступить на открытом микрофоне.

Подробности тут
————

Если решили купить билет, держите промокод на скидку в 500р: ntuzov_go2

#podlodka #конференция
Воспроизводимость и верификация тулчейна Go

https://go.dev/blog/rebuild

Russ Cox в статье для официального блога Go пишет про проблему supply chain attack, как она связана с воспроизводимостью билдов (reproducible builds), как это помогает верифицировать билды.

Также тут подробно разобрано, что было с воспроизводимостью в разных версия Go, и что в Go 1.21 она "идеальная":

> Go 1.21.0 is the first Go toolchain with perfectly reproducible builds

Думаю, девопсам эта статья будет особенно полезна и интересна

#статья #russ_cox
Как вы предпочитаете именовать подобные функции - вместо MyFunc? (см. опрос ниже)

Расскажите в комментариях, почему именно так. Считаете ли вы какой-то подход идиоматичным?
Garbage Collection: как работает и почему это важно знать

https://habr.com/ru/companies/avito/articles/753244/

Хорошая авторская статья про GC в Go - с кучей примеров и картинок(!) ☕️
Читается легко, интересно.

Ещё раз подчеркну - это в кои-то веки авторская статья, а не перевод. В последнее время это стало редкостью.

#post #habr #gc
Please open Telegram to view this post
VIEW IN TELEGRAM
Profile-guided optimization in Go 1.21

https://go.dev/blog/pgo

Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться.
И самое интересное - он показывает конкретный пример оптимизации приложения.

Полная документация по PGO тут: https://go.dev/doc/pgo

#pgo #go_official
Forwarded from defer panic
Мне было сегодня лет, когда я узнал, что в GoLand встроен плейграунд, и больше не нужно идти в браузер, чтобы проверить какой-то маленький кусок кода. Он умеет как выполнять локально, так и загружать код на официальный плейграунд, после чего можно поделиться ссылкой. Но пожалуй самое крутое — внутри встроенного плейграунда можно использовать все те же фичи, что в обычном режиме, включая дебаг, Copilot и т.д.!

Чтобы открыть, нажимаете два раза Shift или вызываете «поиск по всему», вводите “playground”, вы прекрасны!

https://www.jetbrains.com/go/guide/tips/integrated-go-playground/

❤️ютуббустипатреонплатный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
Golang Дайджест
Мне было сегодня лет, когда я узнал, что в GoLand встроен плейграунд, и больше не нужно идти в браузер, чтобы проверить какой-то маленький кусок кода. Он умеет как выполнять локально, так и загружать код на официальный плейграунд, после чего можно поделиться…
Очень крутая фича, странно что я не знал о ней всё это время. Теперь сразу забиндил хоткей на неё.

Я редко пользовался плэйграундом в браузере, у меня просто всегда под рукой был проект - sandbox. Но для мелочей открывать отдельный проект лениво. Тем более, в этом плэйграунде я сразу заметил ещё одну интересную фичу - когда его открываешь, в нём по дефолту будет копия текущего открытого go-файла. То есть, можно быстро поиграться с кодом, не ломая при этом оригинальный файл.

Глвное - не пошэрить случайно рабочий код всеми миру 😁
Golang Дайджест pinned «💻 С чего начать изучать GoLang? - Ультимативный пост Оригинальный пост будет обновляться для сохранения актуальности. Репосты при этом не обновляются, поэтому не забывайте проверять оригинал. Must have, нестареющая классика: - A Tour of Go - ресурс, с которого…»
Третье издание книги "Golang для профи"

Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд

Скажу честно, мне эта книга не очень зашла, но я знаю что многим она нравится. Поэтому делюсь этой новостью. Возможно, кто-то ждал обновлённое издание.

UPD: Статья с обзорм новой книги на хабре
————

Это не реклама, но всё же поделюсь мелкими плюшками при покупке книги на сайте издательства. Информацию взял из их почтовой рассылки:

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Скидка 25% по купону —
Golang

#book
Fixing For Loops in Go 1.22

https://go.dev/blog/loopvar-preview

David Chase и Russ Cox в официальном блоге Go рассказывают про проблему LoopVar (переменной цикла) и приводят конкретные примеры, в том числе из реального кейса проекта - Lets Encrypt.

Затем рассказывают, как именно эта проблема решается. Если кратко:

> change for loops to make these variables have per-iteration scope instead of per-loop scope

Как вы помните, эта фича уже есть в Go v1.21, но её нужно включить:

GOEXPERIMENT=loopvar go test

А в версии 1.22 она уже будет работать по-умолчанию

#go_1_22 #go_official
Forwarded from quasilyte senpai
Я думал, что sparse map из статьи Расса Кокса - это очень крутая альтернатива маленькой мапе.

Эта реализация используется, например, внутри компилятора Go и ещё разок в паре stdlib пакетов.

Но пока занимался своими геймдев-задачами, натолкнулся на то, что get и set у этого sparse map довольно медленные. Из-за чего преимущество быстрого reset иногда перекрывались.

То есть: что банальный слайс, что sparse map, давали +/- одинаковое время исполнения. В одном случае reset занимал больше времени, а в другом - время исполнения росло из-за более дорогих get+set.

А вот штука, описанная в статье, умеет и в мгновенный reset, и в более эффективные get+set:
https://quasilyte.dev/blog/post/gen-map/

Может, вы тоже придумаете, где вам это может быть полезно.
Битва за производительность: SparseMap vs GenerationsMap

https://habr.com/ru/articles/762984/

Новая статья от Искандера Шарипова про SparseMap, в продолжение темы предыдущих постов

Вкратце, о чем пойдет речь:

- используем слайс как `map[uint16]T
- приходим к тому, что такой слайс дорого очищать даже с новым clear()
- вспоминаем как устроен sparse map, взяв реализацию из исходников самого Go (там реализация по статье Расса Кокса)
- находим узкие места в этой sparse map реализации
- вводим свою новую структуру, которая для нашей задачи лучше во всех отношениях

#article #quasilyte
⚡️Команда Go наконец-то представила свою позицию относительно организации модуля Go

Распространенный вопрос, который возникает у начинающих Go-разработчиков: «Как организовать проект?» с точки зрения расположения файлов и каталогов.

Цель документа — предоставить некоторые рекомендации, которые помогут ответить на этот вопрос. Чтобы максимально эффективно его использовать, убедитесь, что вы знакомы с основами модулей Go.
Deconstructing Type Parameters

https://go.dev/blog/deconstructing-type-parameters

Интересный рассказ про type parameters на примере поэтапного написания собственной реализации функции Clone[S ~[]E, E any](s S) S

Полезно почитать для более глубокого понимания темы

#go_official
Как наличие тестов влияет на скорость разработки?

Имеется ввиду весь флоу разработки, т.е. Time to market. Это может быть примерная усреднённая оценка. Главное - основывайтесь на личном мнении и опыте.
Anonymous Poll
18%
Точно ускоряет разработку
21%
Скорее ускоряет
5%
Не влияет на скорость
22%
Скорее замедляет
11%
Точно замедляет
23%
Не знаю / Посмотреть ответы