Библиотека Go (Golang) разработчика – Telegram
Библиотека Go (Golang) разработчика
2.69K subscribers
311 photos
101 videos
29 files
386 links
Полезные материалы по всему, что может быть полезно Golang разработчику. По всем вопросам @evgenycarter
Download Telegram
📉👩‍💻 Гайд по garbage collector в Go

Страница, которую стоит держать под рукой каждому Go-разработчику. Здесь подробно разобран принцип работы сборщика мусора в Go, а также приведены наглядные интерактивные схемы для лучшего понимания внутренних процессов.

https://tip.golang.org/doc/gc-guide

👉 @golang_lib
👍1
🖥 Работа со строками и рунами в Go — откройте внутреннюю механику языка

Как Go хранит текст? Почему одна буква может занимать четыре байта, а строки иногда «ломаются» при итерации? Эти мелочи отличают новичка от разработчика, который действительно понимает язык.

🗓 17 ноября в 20:00 МСК на открытом уроке разберём, как устроены строки и руны в Go, что происходит «под капотом» при работе с кодировками и как писать корректный, быстрый код для обработки текста. Вместе с преподавателем напишем живые примеры, разберём частые ошибки и объясним, как их избежать.

➡️ Урок проходит в преддверие старта курса «Golang Developer. Basic». Все участники вебинара получат скидку на обучение: https://vk.cc/cResCu

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Препроцессоры на Go: нарушение границ или сила -toolexec

Мы в Смартомато — супер продуктовые ребята. Со временем у нас скопились недовольство по поводу работы с Golang, захотелось залезть в технические дебри. Произошла гиперкомпенсация и мы придумали препроцессинг в Go. Да, несмотря на то, что этот язык официально не поддерживает препроцессоры — мы всё равно сделали. А сейчас делимся результатами этой работы с вами.

Эта статья по мотивам моего доклада на Golang Conf X 2025 о болях шаблонного кода и вариантах их решения с помощью препроцессинга на базе стандартного тулчейна Go. В тексте не будет сравнения с препроцессорами в других языках и морально-этической оценки решения.

https://habr.com/ru/companies/oleg-bunin/articles/958946/

👉 @golang_lib
3
This media is not supported in your browser
VIEW IN TELEGRAM
Легко визуализируйте граф зависимостей вашего Go-проекта с внешними модулями

Преобразуйте граф зависимостей вашего Go-проекта в динамичную, интерактивную визуализацию с помощью modview. Этот мощный инструмент устраняет сложность понимания графа модулей, предоставляя чёткое и удобное представление зависимостей вашего проекта.

modview использует вывод команды go mod graph для создания визуализации в браузере, позволяя вам легко перемещаться по графу, искать элементы и понимать структуру зависимостей. Независимо от того, оптимизируете ли вы кодовую базу, решаете конфликты версий или изучаете экосистему вокруг вашего проекта - modview станет вашим путеводителем в сложном мире модулей Go.

https://github.com/bayraktugrul/modview

👉 @golang_lib
👍21
🧑‍💻 Все еще пишешь типовой код вручную?

Есть способ лучше. Кодогенерация в Go — это мощный инструмент, который автоматизирует рутину и расширяет возможности языка.

На открытом уроке «Кодогенерация в Go: код, который не пришлось писать» разберем, как это работает. Поговорим о том, когда кодогенерация уместна, какие механизмы Go ее позволяют и как это применяется в реальных проектах.

❗️Это тот случай, когда нейросети не заменят глубокого понимания механизмов языка. Практикующий разработчик с опытом в продакшене покажет, как избежать подводных камней и применять кодогенерацию в рабочих проектах. Ваш шанс научиться создавать более эффективные и лаконичные решения. Перестаньте тратить время на шаблонные задачи и начните генерировать код, который работает за вас.

🗓 Урок пройдет 19 ноября в 20:00 в преддверии старта курса «Golang Developer. Professional». Все участники вебинара получат скидку на обучение. Регистрируйтесь по ссылке, чтобы освоить один из самых перспективных навыков в Go: https://vk.cc/cRnaj1

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация Go: как повысить скорость и эффективность кода

Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность, он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт.

Но чтобы этот язык программирования был действительно производительным, разработчикам необходимо учитывать некоторые тонкости работы с ним. Иначе ваше приложение станет таким же медленным, как айтишник без чашки кофе :) В этой статье мы с вами на примерах разберём часто возникающие ситуации при работе с Go, а также рассмотрим приёмы, которые позволят повысить производительность кода. Надеюсь, разработчики уровня джуниор и мидл смогут почерпнуть для себя что-то полезное.

https://habr.com/ru/companies/simbirsoft/articles/819015/

👉 @golang_lib
👍2
Транзакции в БД на Go с использованием многослойной архитектуры

Когда я присоединяюсь к новой компании, меня часто посещает синдром самозванца. После всех этих собеседований кажется, что парни знают, что делают и я смиренно настравиаюсь учиться у лучших.

Однажды, я столкнулся с инцидентом на проде и обратился за помощью к самому опытному инженеру. Он пришел на помощь и с легкостью изменил значение в БД с помощью... ручного обновления. 🤯 Проблема заключалась в том, что набор SQL-обновлений не был выполнен внутри транзакции.

Работа в новой компании — это всегда увлекательно. Я осознал, что даже если какой-то аспект кажется простым, например, SQL-транзакции, его легко упустить из виду.

SQL кажется чем-то, что мы все хорошо знаем, и мало чем может удивить. (Ему уже 50 лет!) Возможно, пришло время пересмотреть подходы, так как мы уже прошли фазу хайпа по поводу NoSQL, и снова возвращаемся к “используйте просто Postgres”, а иногда и к “SQLite тут за глаза”.

Я хочу сосредоточиться на том, как правильно применять транзакции в коде, а не на их технической сложности. Когда ваш проект становится больше, вы начинаете разделять логику и код базы данных с помощью слоев. Однако это не всегда так просто, как кажется. Вы можете запутаться и столкнуться с неочевидными ошибками.

Основной принцип многослойной архитектуры заключается в разделении критически важных частей кода (логики) от деталей реализации (например, SQL-запросов). Одним из способов достижения такого разделения является паттерн «Репозиторий». Однако, наиболее сложным аспектом такой архитектуры является обработка транзакций.

Когда мы используем транзакции, обычно происходит следующее: сначала мы получаем данные из базы, затем выполняем необходимую логику, обновляем данные и коммитим транзакцию.

Как же организовать код таким образом, чтобы избежать путаницы между слоями? Я часто вижу, как люди задаются этим вопросом, и мне знакома эта боль. Мы сами искали решение, и со временем наши подходы менялись. Вот список различных методов, которые можно рассмотреть, и всё, что я узнал по этому поводу.

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

👉 @golang_lib
👍4
🔍Тестовое собеседование с Go-разработчиком из Яндекса

11 декабря(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.

Как это будет:
📂 Владислав Кирпичов, Go-разработчик в Яндексе, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Влад будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Владу

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир →
@shortcut_go_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Ты не все знаешь о массивах и слайсах в Go

Таймкоды:
00:00 - Введение
00:47 - Устройство массивов в Go
01:40 - Работа с массивами в Go
10:00 - Перемещение массива в стеке
11:29 - Итерация по массивам в Go
15:11 - Где аллоцируются массивы в Go
17:22 - Педедача массива в функцию
18:16 - Слайсы в Go
21:34 - Реаллокация слайса в Go
24:45 - Резервирование памяти под слайс
25:44 - Создание слайса без инициализации
27:38 - Модификация строк в Go
28:35 - Приведение слайсов в строки и обратно без копирования
30:13 - Передача слайса в функцию
31:12 - Итерация по слайсам в Go
33:55 - Оптимизация итерации по слайсам в Go
35:42 - Получение слайсов в Go
42:40 - Получение слайса из массива в Go
43:15 - Конвертация слайса в массив в Go
44:15 - Конвертация слайса в указатель на массив в Go
45:02 - Указатель на нулевой массив в Go
46:18 - Удаление из конца слайса в Go
46:51 - Удаление из начала слайса в Go
49:02 - Реализация стека и очереди в Go
50:00 - Как увеличить размер слайса в Go
50:48 - Как уменьшить емкость слайса в Go
54:05 - Где аллоцируются слайсы в Go
59:12 - Как очистить слайс в Go
01:01:51 - В чем разница пустых и нулевых слайсов в Go
01:05:17 - Как сравнивать слайсы в Go
01:07:53 - Как скопировать данные слайса в Go
01:09:47 - Почему функция appeng возвращает слайсв в Go
01:12:39 - Потенциальные проблемы с функцией append в Go
01:14:10 - Реализация функции append в Go
01:15:32 - Утечки памяти при работе со слайсами в Go
01:21:59 - Курс по глубокому Go

источник

👉 @golang_lib
👍3
Ещё не пишете собственные линтеры? Приходите на Go live-coding от коллег из AvitoTech 17 декабря 🚀ㅤㅤ

За полтора часа стрима вы научитесь:
— понимать внутреннюю механику линтеров;
— писать свои анализаторы под нужды проекта;
— работать с AST Go-проектов.

Вместе со спикером Вячеславом Овчинниковым вы напишете собственный линтер на базе go/ast и go/types. Звучит как идеальный план на вечер среды. Только не забудьте зарегистрироваться по ссылке и добавить встречу в календарь.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Go-pretty

Это популярная библиотека для языка программирования Go (Golang), которая используется для красивого форматирования текста в консоли (терминале).

Если вы пишете CLI-утилиты (программы командной строки), эта библиотека помогает превратить скучный текстовый вывод в структурированные и приятные для глаз данные.

Основные возможности библиотеки:

1. Таблицы (Tables):

- Создает красивые ASCII-таблицы.
- Поддерживает рамки, цвета, заголовки и футеры.
- Умеет объединять ячейки (как colspan / rowspan в HTML).
- Экспорт в CSV, HTML и Markdown.

2. Прогресс-бары (Progress Bars):

- Показывает полосы загрузки или выполнения задач.
- Умеет отслеживать несколько задач одновременно.
- Показывает скорость, ETA (время до окончания) и проценты.

3. Списки (Lists):

- Форматирует иерархические списки (деревья) с отступами и различными стилями маркеров.

4. Работа с текстом (Text):

- Утилиты для выравнивания текста (по центру, слева, справа).
- Управление цветами и стилями (жирный, курсив) с поддержкой ANSI-кодов.


https://github.com/jedib0t/go-pretty

👉 @golang_lib
👍3