Golang Дайджест
Как вы предпочитаете именовать подобные функции? (см. пример выше)
Ладно, расширенный вариант опроса, добавил другие важные варианты.
И важное уточнение - предположим, что функция НЕ в пакете user
И важное уточнение - предположим, что функция НЕ в пакете user
Anonymous Poll
9%
NewUserType(str string)
15%
UserTypeFromStr(str string) / UserTypeFromString(str string)
6%
ConvertToUserType(str string) / и похожие вариации
14%
ParseUserType(str string)
23%
GetUserType(str string)
10%
StringToUserType(str string)
1%
Другой вариант (напишу в комментариях)
8%
Без разницы, главное чтобы было понятно
15%
Не знаю / Посмотреть ответы
👍4
Garbage Collection: как работает и почему это важно знать
https://habr.com/ru/companies/avito/articles/753244/
Хорошая авторская статья про GC в Go - с кучей примеров и картинок(!)☕️
Читается легко, интересно.
Ещё раз подчеркну - это в кои-то веки авторская статья, а не перевод. В последнее время это стало редкостью.
#post #habr #gc
https://habr.com/ru/companies/avito/articles/753244/
Хорошая авторская статья про GC в Go - с кучей примеров и картинок(!)
Читается легко, интересно.
Ещё раз подчеркну - это в кои-то веки авторская статья, а не перевод. В последнее время это стало редкостью.
#post #habr #gc
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Go's Garbage Collection: как работает и почему это важно знать
Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. Я хочу рассказать, как устроен сборщик мусора в Golang и как он работает, чтобы вы могли писать более производительные приложения и...
👍33❤3🤔1
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
https://go.dev/blog/pgo
Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться.
И самое интересное - он показывает конкретный пример оптимизации приложения.
Полная документация по PGO тут: https://go.dev/doc/pgo
#pgo #go_official
go.dev
Profile-guided optimization in Go 1.21 - The Go Programming Language
Introduction to profile-guided optimization, generally available in Go 1.21.
👍5❤2🤯2
Golang Дайджест
Серия постов про новый пакет slices от ArdanLabs В статьях разбираются функции из нового пакета: - Binary Search - Clip, Clone, and Compact - Compare - Contains, Delete, and Equal В случае постов ArdanLabs и конкретно от William Kennedy…
Вышла новая статья серии: Contains, Delete, and Equal
(пост обновил)
(пост обновил)
Ardan Labs
Slices Package: Contains, Delete, and Equal
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
👍9
Forwarded from defer panic
Мне было сегодня лет, когда я узнал, что в GoLand встроен плейграунд, и больше не нужно идти в браузер, чтобы проверить какой-то маленький кусок кода. Он умеет как выполнять локально, так и загружать код на официальный плейграунд, после чего можно поделиться ссылкой. Но пожалуй самое крутое — внутри встроенного плейграунда можно использовать все те же фичи, что в обычном режиме, включая дебаг, Copilot и т.д.!
Чтобы открыть, нажимаете два раза Shift или вызываете «поиск по всему», вводите “playground”, вы прекрасны!
https://www.jetbrains.com/go/guide/tips/integrated-go-playground/
❤️ • ютуб • бусти • патреон • платный канал
Чтобы открыть, нажимаете два раза Shift или вызываете «поиск по всему», вводите “playground”, вы прекрасны!
https://www.jetbrains.com/go/guide/tips/integrated-go-playground/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33❤1👍1🤔1
defer panic
Мне было сегодня лет, когда я узнал, что в GoLand встроен плейграунд, и больше не нужно идти в браузер, чтобы проверить какой-то маленький кусок кода. Он умеет как выполнять локально, так и загружать код на официальный плейграунд, после чего можно поделиться…
Очень крутая фича, странно что я не знал о ней всё это время. Теперь сразу забиндил хоткей на неё.
Я редко пользовался плэйграундом в браузере, у меня просто всегда под рукой был проект - sandbox. Но для мелочей открывать отдельный проект лениво. Тем более, в этом плэйграунде я сразу заметил ещё одну интересную фичу - когда его открываешь, в нём по дефолту будет копия текущего открытого go-файла. То есть, можно быстро поиграться с кодом, не ломая при этом оригинальный файл.
Глвное - не пошэрить случайно рабочий код всеми миру 😁
Я редко пользовался плэйграундом в браузере, у меня просто всегда под рукой был проект - sandbox. Но для мелочей открывать отдельный проект лениво. Тем более, в этом плэйграунде я сразу заметил ещё одну интересную фичу - когда его открываешь, в нём по дефолту будет копия текущего открытого go-файла. То есть, можно быстро поиграться с кодом, не ломая при этом оригинальный файл.
Глвное - не пошэрить случайно рабочий код всеми миру 😁
👍11😁4
Golang Дайджест pinned «💻 С чего начать изучать GoLang? - Ультимативный пост Оригинальный пост будет обновляться для сохранения актуальности. Репосты при этом не обновляются, поэтому не забывайте проверять оригинал. Must have, нестареющая классика: - A Tour of Go - ресурс, с которого…»
Третье издание книги "Golang для профи"
Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд
Скажу честно, мне эта книга не очень зашла, но я знаю что многим она нравится. Поэтому делюсь этой новостью. Возможно, кто-то ждал обновлённое издание.
UPD: Статья с обзорм новой книги на хабре
————
Это не реклама, но всё же поделюсь мелкими плюшками при покупке книги на сайте издательства. Информацию взял из их почтовой рассылки:
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Скидка 25% по купону —
Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд
Скажу честно, мне эта книга не очень зашла, но я знаю что многим она нравится. Поэтому делюсь этой новостью. Возможно, кто-то ждал обновлённое издание.
UPD: Статья с обзорм новой книги на хабре
————
Это не реклама, но всё же поделюсь мелкими плюшками при покупке книги на сайте издательства. Информацию взял из их почтовой рассылки:
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Скидка 25% по купону —
Golang
#bookwww.piter.com
Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы, 3-е изд.
Фундаментальное руководство по известному высокопроизводительному языку программирования Go (Golang).
👍11❤3
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, но её нужно включить:
#go_1_22 #go_official
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
go.dev
Fixing For Loops in Go 1.22 - The Go Programming Language
Go 1.21 shipped a preview of a change in Go 1.22 to make for loops less error-prone.
👍18😢5
Golang Дайджест
Fixing For Loops in Go 1.22 https://go.dev/blog/loopvar-preview David Chase и Russ Cox в официальном блоге Go рассказывают про проблему LoopVar (переменной цикла) и приводят конкретные примеры, в том числе из реального кейса проекта - Lets Encrypt. Затем…
Хабр
В Go меняется фундаментальная вещь — цикл
Если раньше в циклах были проблемы с замыканиями , так как переменная цикла имела скоуп всего цикла, а не одной его итерации, то в 1.22 это поведение поменяют . проще показать на примере: funcs :=...
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/
Может, вы тоже придумаете, где вам это может быть полезно.
Эта реализация используется, например, внутри компилятора Go и ещё разок в паре stdlib пакетов.
Но пока занимался своими геймдев-задачами, натолкнулся на то, что get и set у этого sparse map довольно медленные. Из-за чего преимущество быстрого reset иногда перекрывались.
То есть: что банальный слайс, что sparse map, давали +/- одинаковое время исполнения. В одном случае reset занимал больше времени, а в другом - время исполнения росло из-за более дорогих get+set.
А вот штука, описанная в статье, умеет и в мгновенный reset, и в более эффективные get+set:
https://quasilyte.dev/blog/post/gen-map/
Может, вы тоже придумаете, где вам это может быть полезно.
👍9❤2
Golang Дайджест
Я думал, что sparse map из статьи Расса Кокса - это очень крутая альтернатива маленькой мапе. Эта реализация используется, например, внутри компилятора Go и ещё разок в паре stdlib пакетов. Но пока занимался своими геймдев-задачами, натолкнулся на то, что…
Пост Искандера Шарипова из чата сообщества Геймдева на Go
https://t.me/go_gamedev
Я решил, что вам тоже может быть интересно
https://t.me/go_gamedev
Я решил, что вам тоже может быть интересно
👍9❤2
Битва за производительность: SparseMap vs GenerationsMap
https://habr.com/ru/articles/762984/
Новая статья от Искандера Шарипова про SparseMap, в продолжение темы предыдущих постов
Вкратце, о чем пойдет речь:
- используем слайс как `map[uint16]T
- приходим к тому, что такой слайс дорого очищать даже с новым clear()
- вспоминаем как устроен sparse map, взяв реализацию из исходников самого Go (там реализация по статье Расса Кокса)
- находим узкие места в этой sparse map реализации
- вводим свою новую структуру, которая для нашей задачи лучше во всех отношениях
#article #quasilyte
https://habr.com/ru/articles/762984/
Новая статья от Искандера Шарипова про SparseMap, в продолжение темы предыдущих постов
Вкратце, о чем пойдет речь:
- используем слайс как `map[uint16]T
- приходим к тому, что такой слайс дорого очищать даже с новым clear()
- вспоминаем как устроен sparse map, взяв реализацию из исходников самого Go (там реализация по статье Расса Кокса)
- находим узкие места в этой sparse map реализации
- вводим свою новую структуру, которая для нашей задачи лучше во всех отношениях
#article #quasilyte
Хабр
Битва за производительность: SparseMap vs GenerationsMap
Есть такая занимательная структура данных, описанная в статье Russ Cox — sparse map. Она используется, например, в недрах компилятора Go . А ещё в некоторых пакетах его стандартной библиотеки . У неё...
👍11
Forwarded from Библиотека Go-разработчика | Golang
⚡️Команда Go наконец-то представила свою позицию относительно организации модуля Go
Распространенный вопрос, который возникает у начинающих Go-разработчиков: «Как организовать проект?» с точки зрения расположения файлов и каталогов.
Цель документа — предоставить некоторые рекомендации, которые помогут ответить на этот вопрос. Чтобы максимально эффективно его использовать, убедитесь, что вы знакомы с основами модулей Go.
Распространенный вопрос, который возникает у начинающих Go-разработчиков: «Как организовать проект?» с точки зрения расположения файлов и каталогов.
Цель документа — предоставить некоторые рекомендации, которые помогут ответить на этот вопрос. Чтобы максимально эффективно его использовать, убедитесь, что вы знакомы с основами модулей Go.
🔥52👍6🤔2
Deconstructing Type Parameters
https://go.dev/blog/deconstructing-type-parameters
Интересный рассказ про type parameters на примере поэтапного написания собственной реализации функции
Полезно почитать для более глубокого понимания темы
#go_official
https://go.dev/blog/deconstructing-type-parameters
Интересный рассказ про type parameters на примере поэтапного написания собственной реализации функции
Clone[S ~[]E, E any](s S) S
Полезно почитать для более глубокого понимания темы
#go_official
go.dev
Deconstructing Type Parameters - The Go Programming Language
Why the function signatures in the slices packages are so complicated.
👍9
Как наличие тестов влияет на скорость разработки?
Имеется ввиду весь флоу разработки, т.е. Time to market. Это может быть примерная усреднённая оценка. Главное - основывайтесь на личном мнении и опыте.
Имеется ввиду весь флоу разработки, т.е. Time to market. Это может быть примерная усреднённая оценка. Главное - основывайтесь на личном мнении и опыте.
Anonymous Poll
18%
Точно ускоряет разработку
21%
Скорее ускоряет
5%
Не влияет на скорость
22%
Скорее замедляет
11%
Точно замедляет
23%
Не знаю / Посмотреть ответы
🚀 Mojo GoJo: Write Go with Emojis!
https://github.com/EdmondTabaku/mojo-gojo
Для поднятия настроения перед рабочим понедельником: утилита, позволяющая писать код на Go с использованием эмодзи.
Выглядит забавно, подумываю затащить это дело в продакшен на работе😄
————
Спасибо @Len4ez за ссылку
#joke #tool
https://github.com/EdmondTabaku/mojo-gojo
Для поднятия настроения перед рабочим понедельником: утилита, позволяющая писать код на Go с использованием эмодзи.
Выглядит забавно, подумываю затащить это дело в продакшен на работе
————
Спасибо @Len4ez за ссылку
#joke #tool
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24👍5❤4🤔1
Type Inference - подробный разбор
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
go.dev
Everything You Always Wanted to Know About Type Inference - And a Little Bit More - The Go Programming Language
A description of how type inference for Go works. Based on the GopherCon 2023 talk with the same title.
👍10❤4
Golang Дайджест
Profile-guided optimization in Go 1.21 https://go.dev/blog/pgo Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться. И самое интересное - он показывает конкретный пример оптимизации приложения. Полная документация…
Перевод этой статьи на Хабре: https://habr.com/ru/articles/766460/
Хабр
Profile-guided optimization в Go 1.21
В Go 1.20 была выпущена предварительная версия profile-guided optimization (PGO) , которую пользователи могли протестировать. После устранения известных ограничений в предварительной версии и...
🔥7👍3