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

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c2468
Download Telegram
🎄 Начни 2025-й с апгрейдом навыков,
которые откроют двери в мир IT!

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

🔗 Собери свой план и начни путь в IT

Почему это выгодно?

📚 Несколько программ по цене одной — максимальная эффективность: учишься сразу тому, что действительно нужно.

💾 Бессрочный доступ — все материалы всегда под рукой, чтобы учиться в своём темпе.

💸 Знания, которые окупятся — навыки, востребованные в любой точке мира.
Какие навыки ты можешь прокачать?

💡 Математика для Data Science + Алгоритмы и структуры данных
— Подготовка к собеседованиям в FAANG и поступлению в ШАД. Решай сложные задачи, работай с данными и моделями на профессиональном уровне.

💡 Алгоритмы и структуры данных + ML
— Улучшай своё алгоритмическое мышление и изучай базовые методы машинного обучения, чтобы создавать интеллектуальные приложения.

💡 Frontend Basic + Базовые модели ML
— Построй свою первую веб-страницу и погрузись в мир ML: от нейросетей до ML-бустинга.

💡 Архитектуры и шаблоны проектирования + Математика для Data Science
— Развивай аналитическое мышление и учись проектировать устойчивые системы.

💡 Алгоритмы и структуры данных + Frontend Basic
— Получи полный набор навыков: от оптимизации алгоритмов до создания современных веб-приложений.

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

🔗 Составь свой IT-маршрут сейчас или выбери курс по новогодней скидке
🌟 Уже 2025 год: Время обновить свою ide для Go! 🚀

Разработка на Go продолжает набирать популярность, и если вы все еще используете старые настройки для Visual Studio Code, пора идти в ногу со временем! В статье вы найдете подробное руководство по тому, как сделать вашу IDE максимально удобной и продуктивной.

🔧 Что нужно для старта:
Go (1.22 и выше): Последние версии языка — не только про производительность, но и про новые возможности.
VS Code: Самая гибкая IDE для работы с Go.
Git: Без контроля версий в 2025 году никуда.

🚀 Что настроить в VS Code:
Расширения, без которых нельзя:
Go (ms-vscode.go): официальное расширение для автодополнения, отладки и работы с тестами.
Error Lens: чтобы ошибки были видны сразу, прямо в коде.
GitLens: лучшая интеграция с Git.
Go Test Explorer: легкое управление тестами.

Настройка settings.json:
Автоматическое обновление инструментов Go.
Использование Language Server для лучшей поддержки языка.
Подсказки, которые делают код читабельным.
Горячие клавиши: Настройте свои любимые шорткаты, чтобы ускорить работу в разы.
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 DebugString() в Go: псевдостандарт для удобной отладки

Недавно в блоге DoltHub вышла интересная статья о неформальном подходе к отладке структур в Go с помощью метода DebugString().

📜 Что такое DebugString()?
Это метод, который используется для получения детального текстового представления структур данных. В отличие от String(), предназначенного для пользовательского вывода, DebugString() раскрывает больше технических деталей, которые полезны разработчикам во время отладки.

Пример:
type Example struct {  
Field1 int
Field2 string
}

func (e Example) DebugString() string {
return fmt.Sprintf(
"Example{Field1: %d, Field2: %q}",
e.Field1,
e.Field2)
}

📌 Почему это полезно?
DebugString() помогает легко визуализировать внутреннее состояние объектов.
Вы можете отделить пользовательский вывод (String()) от отладочного, чтобы не показывать конфиденциальную информацию.
Этот метод может быть добавлен к любым типам, не нарушая существующую функциональность.

🤨 Почему это псевдостандарт?
Go не навязывает DebugString() как обязательный метод, но его использование становится популярным среди библиотек, где требуются расширенные возможности отладки. Это хороший пример того, как в сообществе Go рождаются практичные и неформальные стандарты.
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Хотите порешать задачи?

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

📂 Как всё устроено?
Каждая задача – это отдельная папка с:
Описанием в README.md, чтобы вы точно поняли, что делать.
Тестами в *_test.go, которые не дадут схалтурить.

🛠 Что делать?
1️⃣ Читаем задание в README.md.
2️⃣ Пишем решение на Go.
3️⃣ Запускаем тесты и радуемся (или ищем баги, если тесты падают).

🔥 Подходит как для новичков, так и для бывалых разработчиков, которые любят прокачивать скиллы через практику. А если сделаете самое элегантное решение и успеете быстрее всех, то вас увековечат в репозитории!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮 DOOM как искусство? Да!

Вы когда-нибудь думали, что DOOM — это не просто игра, а настоящее искусство? Если нет, то "DOOM: The Gallery Experience" вас переубедит.

🖼 Что это?
Это необычная галерея, где уровни культового шутера превращены в экспонаты. Вас ждёт прогулка по знакомым аренам, но теперь вместо демонов — атмосфера спокойствия и эстетики. Звучит абсурдно? Возможно. Но выглядит невероятно!

Чем цепляет?
Ретро-дизайн DOOM сочетается с музейной атмосферой.
Музыка и освещение создают уютное ощущение — никакого стресса, только удовольствие.
Каждый уголок можно рассматривать как арт-объект, а не поле боя.
Please open Telegram to view this post
VIEW IN TELEGRAM
📦 Пакет embed в Go

Если вы когда-либо работали с Go, то знаете, как важно уметь управлять статическими ресурсами. Пакет embed (представленный в Go 1.16) решает эту задачу элегантно: он позволяет встраивать файлы прямо в исполняемый бинарный файл, что делает приложение автономным и упрощает его развертывание.

💡 Зачем использовать embed?
С помощью директивы //go:embed вы можете встроить файлы (например, HTML, CSS, конфигурационные файлы или изображения) прямо в бинарный файл. Это исключает необходимость поставлять эти файлы отдельно, и ваши приложения становятся более компактными и безопасными.

🛠 Как это работает?
Вы указываете директиву //go:embed перед переменной.
Используете типы данных string для текстовых файлов, []byte для бинарных данных или embed.FS для работы с целыми директориями.

🚀 Пример использования:
package main

import (
"embed"
"fmt"
)

//go:embed hello.txt
var hello string

func main() {
fmt.Println(hello)
}

В этом примере файл hello.txt встроен в приложение, и его содержимое доступно как строка.

Почему стоит использовать embed?
Удобство развертывания: всё в одном файле — не нужно беспокоиться о поставке отдельных файлов.
Безопасность: встроенные файлы не могут быть изменены после компиляции.
Автономность: ваши приложения не зависят от внешних файлов и легко переносятся между окружениями.

Когда не стоит использовать embed?
Когда нужно работать с динамически изменяющимися файлами (например, конфигурациями, которые могут меняться в процессе работы приложения).
Для очень больших файлов, так как это увеличивает размер бинарника.
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет! 👋

Очень интересно: читаете ли вы что-то, кроме технической литературы? И нет, книги по agile не в счёт — это точно не сказки!

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

#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
🔫 Сортировка Сталина: как избавиться от «неугодных» элементов в последовательности

Сортировка Сталина — это шутливый термин, который описывает довольно необычный способ сортировки чисел или элементов в последовательности. Принцип этой сортировки сводится к тому, что из массива чисел удаляются все элементы, которые нарушают порядок возрастания.
То есть, остаются только те элементы, которые следуют друг за другом по возрастанию (или не уменьшаются). Применяя такую сортировку, можно получить на выходе подпоследовательность чисел, которая будет упорядочена, а все «недовольные» (нарушающие порядок) будут удалены.

Как работает «сортировка»?
1️⃣ Проходим по массиву и проверяем каждый следующий элемент.
2️⃣ Если элемент меньше предыдущего, его "удаляем" (не включаем в итоговую последовательность).
3️⃣ В результате получаем подпоследовательность, которая является возрастающей.
Please open Telegram to view this post
VIEW IN TELEGRAM
📝 NoCopy Convention в Go: оптимизация работы с памятью

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

↗️ Конвенция NoCopy советует передавать большие структуры или массивы по указателю, а не по значению. Это позволяет работать с данными без их излишнего копирования, экономя память и улучшая производительность.
Например, если у вас есть большая структура, передавайте её как указатель в функцию, чтобы избежать создания копий.

🤩 Этот подход полезен в случае, когда требуется эффективно управлять памятью и ускорить выполнение программы. Но важно помнить о возможных рисках, например, необходимости контроля за нулевыми указателями.

👉 Для более подробного объяснения и примеров, загляните в статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 Улучшение тестов на Go: почему стоит использовать "if got, want"

Техника проверки if got != want { t.Errorf(...) } в тестах Go — это простой и эффективный способ проверки значений, который полностью соответствует философии языка. Она не требует сторонних библиотек, остаётся прозрачной и легко читаемой, что особенно важно для минималистичного и понятного кода.

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

👀 Подробнее про технику с примерами кода можно почитать тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Помните сортировку Сталина? Встречайте милосердную версию!

Недавно наткнулись на интересный проект — MercifulStalinSort. Если помните, в сортировке Сталина элементы, нарушающие порядок, безжалостно удаляются. Итог — массив вроде бы отсортирован, но какой ценой? 😅

Милосердный Сталин идёт другим путём:
🔸 Забираем из основного массива элементы, которые стоят не по возрастанию
🔸 Затем из дополнительного массива в обратном порядке забираем те элементы, которые стоят не по убыванию
🔸 После чего нужно просто объединить получившиеся массивы. Если остались неотсортированные элементы, то обработать их рекурсивно

Идея проста, но алгоритм получился намного более «сострадательным», сохраняя больше данных. Конечно, это больше про эксперимент и юмор, чем про реальную производительность, но попробовать его в деле — уже весело!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔠🔠 Краткий обзор на Echo

Echo — это высокопроизводительный и простой в использовании веб-фреймворк, созданный для разработки приложений на языке Go. Его минимализм, гибкость и богатый набор функций делают Echo популярным выбором для создания REST API, микросервисов и веб-приложений.

Ключевые особенности Echo:
Высокая производительность: echo использует минимальные ресурсы и обеспечивает быстрый отклик благодаря оптимизированной маршрутизации и обработке HTTP-запросов.

Удобная маршрутизация: поддерживает простую маршрутизацию с возможностью использования переменных и параметров URL:
e.GET("/users/:id", getUser)
e.POST("/users", createUser)


Шаблоны: поддерживает интеграцию с шаблонизаторами для рендеринга HTML-страниц.

WebSocket и SSE: встроенная поддержка современных технологий реального времени, таких как WebSocket и Server-Sent Events.

Простая интеграция: echo легко интегрируется с другими библиотеками Go, такими как ORM (GORM, Ent), библиотеки для работы с базами данных или очередями.


Пример Hello World с использованием Echo:
func main() {
e := echo.New()

e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})

e.Logger.Fatal(e.Start(":8080"))
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔧 Go: Структуры, интерфейсы и внедрение зависимостей – проще, чем кажется!

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

🛠 Что вы узнаете?
🔠Структуры: как моделировать реальные данные с помощью полей и методов.
🔠Интерфейсы: как задавать контракты между типами и отделять детали реализации от общей логики.
🔠Внедрение зависимостей: как сделать ваш код модульным и тестируемым, передавая зависимости через параметры конструктора или функции.

💡 Почему это важно?
Гибкость: интерфейсы позволяют заменить реальные зависимости на моки, что упрощает тестирование.
Удобство изменений: структура кода остаётся простой при добавлении новых функций.
Производительность: Go минималистичен, и внедрение зависимостей здесь проще, чем в других языках.
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Go 1.24: Главные обновления!

В февральском релизе Go 1.24 разработчики приготовили массу улучшений:

💡 Новое в языке
Generic'и: go теперь поддерживает обобщенные псевдонимы типов: псевдоним типа может быть параметризован так же, как определенный тип

🛠 Инструменты
Директива tool в go.mod: для учёта инструментов без лишнего кода.
Кэширование go run: ускоряет повторные запуски.
JSON-вывод для go build/install.
Поддержка версий модулей в бинарниках.

⚡️ Производительность
Карты (map) с Swiss Tables: до 3% прироста скорости.

🧹 Среда выполнения
Новая финализация: runtime.AddCleanup заменяет SetFinalizer.

📚 Библиотеки
Слабые ссылки: новый пакет weak.
Постквантовая криптография: пакет crypto/mlkem.
Ограничение файловой системы: тип os.Root.

🔍 Инструменты анализа
vet ловит больше ошибок в тестах и printf.

Позже, с выходом полноценного релиза, разберёмся подробнее!

#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа

А также примеры того, как говорить точно не надо 🌚

👉Читать
👨‍💻 Тренируемся быстро печатать!

❗️Typinghackers.com - платформа для тренировки скоростной или слепой печати. Тренируйтесь на стандартных шаблонах кода или известных библиотеках.

Платформа развивается, в будущем ожидается больше упражнений и языков.

👇Давайте померяемся рекордами по Hello World в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Как 335 строк кода превратились в 0: магия Podio и отказ от FFmpeg

Недавно команда Prayershub поделилась своим опытом, как они смогли сократить 335 строк шаблонного, избыточного кода, перейдя на более лёгкий и элегантный инструмент — Podio.

Прежде чем внедрить Podio, команда использовала FFmpeg для обработки аудио. Это привело к следующим проблемам:
Кодовая перегрузка: обёртки для команд FFmpeg занимали десятки строк, даже для простых задач.
Сложность поддержки: ошибки из-за неправильной генерации команд отнимали много времени.
Непрозрачность кода: новый разработчик в команде тратил кучу времени, чтобы понять, как всё работает.

Podio — это Go-пакет, созданный специально для работы с аудио. Его ключевая особенность — Fluent API, который делает код минималистичным и читаемым. Вместо громоздких вызовов FFmpeg вы пишете понятные цепочки вызовов методов.

Команда Prayershub поделилась результатами перехода на Podio:
Сокращение 335 строк кода: убрали избыточные обёртки и шаблоны.
Улучшение читаемости: код стал понятным даже для новичков.
Меньше ошибок: подход Podio исключает большинство проблем, связанных с внешними командами.
Ускорение разработки: простота API позволила тратить меньше времени на добавление новых функций.

📎Посмотреть заклинания, сокращающие код (ну, или по крайней мере их результат) можно здесь
Please open Telegram to view this post
VIEW IN TELEGRAM