Библиотека Go-разработчика | Golang
23.3K subscribers
2.07K photos
41 videos
87 files
4.44K links
Все самое полезное для Go-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/32d20779

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🤝 💼 IT-конференции: как сходить на мероприятие и извлечь из него максимум пользы

🚀 IT-конференции — это не только про кофе-брейки и бесплатные стикеры. Это шанс завести полезные знакомства, узнать инсайдерскую информацию и найти новые карьерные возможности. Но для этого нужно не просто прийти, а правильно подготовиться и ловить важные моменты.

Как извлечь из мероприятия максимум пользы? Как сделать так, чтобы оно дало не только эмоции, но и реальные бонусы для вашей карьеры?

🔗 Подробнее в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
1🌚1
Какой самый большой период поиска работы был у вас?

🐸Библиотека Go разработчика #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
11😁9👍2😢1🌚1
🎉 Поздравляем с 8 марта

Сегодня отмечаем вклад девушек-разработчиков, аналитиков, тестировщиков, тимлидов и всех, кто влюблён в код. Без вас IT не было бы таким, каким мы его знаем. С праздником, коллеги 💐

Женщины оставили огромный след в истории IT. Если вам кажется, что программирование — это исключительно «мужская территория», взгляните, вот лишь несколько легендарных женщин:

🔹 Ада Лавлейс — автор первой компьютерной программы ещё в 19 веке.
🔹 Грейс Хоппер — создала первый компилятор и популяризировала термин «баг».
🔹 Барбара Лисков — её принцип Liskov Substitution является основой ООП, в том числе в Java.
🔹 Эдит Кларк — первая женщина-инженер, внесшая вклад в вычислительные методы в энергетике.
🔹 Маргарет Гамильтон — разработала софт для посадки «Аполлона-11» на Луну.

А это только малая часть. В статье собраны ещё больше вдохновляющих историй.

🔗 Подробнее в статье

🐸 Библиотека джависта
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥16👍81
✏️ Как в газете, но современный

Предлагаем размяться и вспомнить самые базовые слова любого Go-разработчика.

1. Имя маскота языка Go.

2. Фреймворк для создания HTTP-сервисов

3. Функция, которая вызывается перед завершением программы для освобождения ресурсов

4. Название ключевого типа, который представляет любое значение

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

Пишите свои ответы в комментарии 👇

🐸Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🤔3😁1
📰 Что произошло за неделю

Собрали для вас главные события и контент минувших семи дней.

🧹 Улучшенная чисткакоманда Go работает над улучшением системы сборки мусора и добавлением поддержки слабых ссылок.

🧑‍💻 synctest — новый экспериментальный пакет в Go 1.24, который позволяет контролировать время и горутины в тестах. Нашли для вас подробный видеообзор с примерами.

👀 Go и без классов хорошостатья о том, почему язык Go не требует классов как в других языках программирования.

📊 Итоги опроса про работу — Proglib проводили исследование о рынке труда. Самое время поделиться результатами.

🐸Библиотека Go разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
Что такое Cache contention

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

🐸Библиотека Go для собеса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥱3
⚙️ Задача: реализуйте итеративную функцию нахождения n-ого числа Фибоначчи

Недавно мы реализовывали тоже самое, но рекурсивно. Теперь пора сделать чуть оптимизированную версию.

Такой способ использует константную память, поскольку не использует рекурсивных вызовов.

🐸Библиотека задач по Go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥱3
🚀 Alibaba, Datadog и Quesma упрощают инструментирование Go-приложений

Если раньше сбор телеметрии в Go был головной болью, то теперь всё становится гораздо проще. Крупные компании объединили усилия, чтобы интеграция OpenTelemetry не требовала ручных правок кода.

🔍 Что случилось

Эти компании разработали инструменты автоматического инструментирования на этапе компиляции, используя go -toolexec. Это значит, что:

Не нужно добавлять инструментирование вручную в код приложения.

Инструментируются даже зависимости и стандартная библиотека Go.

Наблюдаемость в Go становится проще, чем когда-либо.

Эта инициатива упрощает жизнь DevOps-инженерам и Go-разработчикам, снижая порог вхождения в инструментирование.

➡️ Подробности в источнике

💬 Что думаете? Уже используете OpenTelemetry в Go? Делитесь опытом в комментариях 👇

🐸Библиотека Go разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥53🥱1
Альтернативы тернарных операторов в Go

Go — минималистичный язык программирования, который намеренно исключает некоторые привычные конструкции, присутствующие в других языках. Одним из таких отсутствующих элементов является тернарный оператор (condition ? trueValue : falseValue). Однако в Go существуют элегантные способы обойти это ограничение.

1️⃣ Мапа с булевым ключом

Одно из самых элегантных решений это использование мапы. Вот так это выглядит:
result := map[bool]string{true: "Значение истины", false: "Значение лжи"}[condition]


2️⃣ Анонимная функция

Еще один подход — создание анонимной функции с немедленным вызовом:
result := func() string {
if condition {
return "Значение истины"
}
return "Значение лжи"
}()


3️⃣ Вспомогательная функция

Для часто используемых типов данных можно создать вспомогательные функции:
// Для строк
func IfString(condition bool, trueVal, falseVal string) string {
if condition {
return trueVal
}
return falseVal
}

// Для целых чисел
func IfInt(condition bool, trueVal, falseVal int) int {
if condition {
return trueVal
}
return falseVal
}

// Использование
minValue := IfInt(user.IsAdmin, 0, 10)
message := IfString(isActive, "Активен", "Неактивен")


Так ли нужен тернарный оператор в Go? Или может это пережиток прошлого? Делитесь своим мнением в комментариях⬇️

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁53🤔11👍9🤩6
📝 Структуры данных: ТОП-30 вопросов и ответов для собеседований в 2025 году

Техническое собеседование на позицию разработчика, дата-сайентиста и ML-инженера часто включает вопросы по структурам данных и связанным с ними алгоритмами.

В нашей статье мы рассмотрим базовые и продвинутые темы, разберем типичные задачи и обсудим оптимальные способы их решения.

📄 Прочитайте статью и укрепите свои знания https://proglib.io/sh/1uYAygzIxr

Библиотека питониста
🥱3🔥21
🔧 Быстрый способ конвертации JSON в Go-структуры

Нашли для вас удобный проект, который конвертирует JSON в структуры Go.

Как это выглядит

1️⃣ Вставляем свой JSON в форму на странице
{
"name": "Prog Lib",
"age": 30,
"email": "[email protected]",
"is_active": true,
"tags": ["golang", "developer"],
"profile": {
"github": "https://github.com/proglib"
}
}


2️⃣ На выходе получаем готовую структуру
type AutoGenerated struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
IsActive bool `json:"is_active"`
Tags []string `json:"tags"`
Profile struct {
Github string `json:"github"`
} `json:"profile"`
}


Инструмент не без ошибок, но отлично работает в 99% случаев.

➡️ Попробовать JSON-to-Go

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👾3👍21
А чего в Go не хватает вам 💬

🐸Библиотека Go разработчика #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
😁67🥰3🌚1
Чек-лист: отправка кода на ревью

Прежде чем звать старшего коллегу для проверки кода пройдись по этому списку 👇

📌 Общее
✓ Код компилируется и проходит все необходимые тесты.
✓ В коде нет отладочных выводов в консоль.
✓ Отсутствуют «магические числа» (используются константы)
✓ Нет дублирования кода.
✓ Код не похож на «простыню», строки методов не исчисляются сотнями.

🛠 Функциональность
✓ Код делает именно то, что заявлено в задаче / тикете.
✓ Проверены граничные случаи.
✓ Обработаны возможные исключения.
✓ При ошибках возвращаются понятные сообщения и коды.

🚀 Производительность
✓ Код не создает лишних объектов.
✓ Нет ненужных синхронизаций и блокировок.
✓ Если есть циклы в циклах — подумать дважды, нельзя ли их убрать.

🧹 Чистота и поддерживаемость
✓ Минимальная вложенность (if-else не превращается в лабиринт)
✓ Код понятен без лишних комментариев
✓ Если добавлен новый код – он покрыт тестами
✓ Нет «зомби-кода» (закомментированных кусков, которые «может быть пригодятся»)

🧪 Тестирование
✓ Все тесты проходят до отправки на ревью
✓ Покрытие юнит-тестами достаточное, основные сценарии проверены
✓ Не тестируем очевидное (getter/setter, toString())

🔗 Git и процесс ревью
✓ Название ветки соответствует принятому стандарту (feature/, bugfix/, hotfix/)
✓ Коммиты логичны и атомарны (не «все в одном»)
✓ Сообщения коммитов осмысленные, а не «fixed bug» или «changes»

Отправляй на ревью и пусть только попробуют найти изъяны!

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍12🤔5😁4🔥2
Эксперт или универсал: Какой путь выбрать

Однажды каждый разработчик сталкивается с выбором:

💡 Идти вглубь — становиться узким специалистом, глубоким экспертом в конкретной технологии.
💡 Идти вширь — осваивать новые технологии, расширять кругозор, становиться универсалом.

Разбираем плюсы, минусы и подводные камни каждого пути.

Путь эксперта

Ты становишься мастером в своем деле: знаешь стек как свои пять пальцев, можешь решать сложные задачи, оптимизировать и углубляться в детали.

Плюсы:
✓ Высокий спрос на рынке для редких экспертов.
✓ Возможность стать ментором, архитектором, техлидом.
✓ Возможность делать революционные вещи в узкой области.

Минусы:
— Высокий порог входа: чтобы стать экспертом, нужны годы практики.
— Узкая специализация = риски (если технология потеряет актуальность).
— Иногда скучно: одно и то же из года в год.

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

Путь универсала

Ты не привязываешься к одной технологии и легко прыгаешь между разными стеками. Сегодня фронтенд, завтра DevOps, послезавтра AI — ты всегда готов учиться новому.

Плюсы:
✓ Легче адаптироваться к новым трендам и рынку.
✓ Возможность работать в разных областях.
✓ Больше шансов занять менеджерские позиции.
✓ Можно быть разработчиком-одиночкой (фриланс, стартапы, консалтинг).

Минусы:
— Поверхностные знания = не всегда высокая зарплата.
— Риски синдрома "немного знаю обо всём, но нигде не силён".
— Постоянная учёба: новые фреймворки, языки, подходы... устаёшь от потока информации.

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

Давайте обсудим в комментариях какой путь выбрали вы или хотели бы выбрать 👇

🐸Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱11👍7🔥4🤔41
🎥 Что посмотреть: как Go улучшает производительность компилятора TypeScript

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

Команда разработчиков TypeScript делится опытом переноса компилятора с использованием Go. Это позволяет сократить время компиляции в десятки раз и решает множество проблем с производительностью в JavaScript.

➡️ Смотреть видео

🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32👾2🔥1
Нужна ли математика программисту

Можно ли стать разработчиком, если в школе ненавидел математику? А если наоборот — тащился от алгебры и геометрии, но кодить не умеешь? Эта статья раскладывает всё по полочкам: где без математики никуда, а где можно и без неё.

➡️ Что внутри:

✓ Почему все считают, что программисты — математики

✓ В каких сферах разработки можно вообще не знать математику

✓ Где хватит готовых библиотек, а где придётся разбираться в формулах

✓ Какие области программирования требуют мощного математического бэкграунда

✓ Что делать, если математика — это боль, но хочется освоить ML или Data Science

✓ Топ книг, которые помогут понять и даже полюбить математику

🔵 Чтобы знать математику, забирайте наш курс → «Математика для Data Science»

📎 Читать статью

Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤔2😢1👾1
🔥 Go и дженерики: спасение или катастрофа

Давайте поговорим о самой противоречивой фиче последних лет – дженериках.

Go 1.18 принес нам дженерики, и с тех пор сообщество разделилось на два лагеря:

«Это было необходимо!» – наконец-то можно писать более чистый и переиспользуемый код. Ad-hoc-полиморфизм не всегда удобен, а interface{} и рефлексия – зло.

«Go потерял свою простоту!» – дженерики убили лаконичность кода. Вместо понятного Go мы получили мини-Java.

💭 Согласны ли вы с тем, что дженерики спасли Go, или же это был шаг в сторону усложнения?

🐸Библиотека Go разработчика #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱7
📰 Новости минувшей недели

Подводим итоги всего, что случилось за эти 7 дней:

🎧 Новый выпуск подкаста Cup o' Goобсуждаются релизы безопасности Go 1.24.1 и 1.23.7, обновление gopls v0.18.0, а также инициативы по переписыванию проектов на Go.

🐍 Релиз Viper v1.20.0 — улучшены API поиска файлов, добавлена поддержка привязки структур. Также прекращена поддержка Go 1.20, а устаревший slog shim удалён для упрощения кода.

🌚 Go 1.24 получил новый API — теперь разработчики могут задавать корневую директорию, ограничивая доступ приложения к файловой системе и повышая безопасность.

⚙️ Microsoft переписывает компилятор TypeScript на Go

🐸Библиотека Go разработчика #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
👨‍💻 Продвинутые трюки со слайсами

Собрали для вас парочку идей как необычно работать со слайсами:

1️⃣ Удаление элемента без сохранения порядка
s[i] = s[len(s)-1]
s = s[:len(s)-1]


2️⃣Фильтрация слайса без выделения памяти
n := 0
for _, x := range s {
if keep(x) {
s[n] = x
n++
}
}
s = s[:n]


3️⃣ Расширение слайса без перевыделения памяти
if cap(s)-len(s) < n {
s = append(make([]int, 0, len(s)+n), s...)
}


🐸Библиотека Go разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23😁4👍21