Библиотека Go-разработчика | Golang
24.1K subscribers
2.49K photos
48 videos
88 files
4.96K links
Все самое полезное для Go-разработчика в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0

#WXSSA
Download Telegram
🤩 Это скорее всего главный мем 2025 года

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
😁334💯2
💡 Go-кэш за 5 минут

Одной командой и парой строк кода делаем кэш для вашего приложения.

Установка
go get github.com/patrickmn/go-cache


Быстрый пример
c := cache.New(5*time.Minute, 10*time.Minute)
c.Set("foo", "bar", cache.DefaultExpiration)

val, found := c.Get("foo")
if found {
fmt.Println("Found:", val)
}

• 5m — TTL по умолчанию для всех ключей
• 10m — интервал очистки просроченных ключей
• можно указать cache.NoExpiration — чтобы хранить вечно

Полезные методы
// Установить с TTL
c.Set("key", "value", time.Minute)
// Получить значение
c.Get("key")
// Удалить ключ
c.Delete("key")
// Очистить всё
c.Flush()


📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍7🌚7
⚙️ Декларативная валидация данных в Go

Zog – это библиотека, вдохновлённая Zod. Она позволяет гибко и декларативно проверять входные данные, минимизируя ручную обработку ошибок.

Где пригодится

• Валидация JSON-запросов в API
• Проверка параметров HTTP-запросов
• Чтение и проверка переменных окружения
• Минимизация кода валидации и ошибок

Пример использования:
var UserSchema = zog.Object(map[string]zog.Schema{
"username": zog.String().Min(3).Max(20),
"email": zog.String().Email(),
"age": zog.Number().Min(18),
})

func main() {
data := map[string]interface{}{
"username": "go_dev",
"email": "test@proglib.io",
"age": 25,
}

parsed, err := UserSchema.Parse(data)
if err != nil {
fmt.Println("Ошибка валидации:", err)
return
}

fmt.Println("Успешно:", parsed)
}

Создаём схему UserSchema, где username должен быть строкой длиной от 3 до 20 символов, email – валидным email-адресом, а age – числом не меньше 18. Передаём тестовый JSON и проверяем его с помощью UserSchema.Parse().

🖇 Официальный репозиторий проекта

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥41
📎 Go решил отдохнуть

В рейтинге TIOBE наш любимый язык за год потерял 8 позиций.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
😢26❤‍🔥2😁1🥱1
🆚 Go vs C#: когда что выбирать

В феврале мы сравнивали эти два языка — пост собрал много комментариев. Освежим основные тезисы.

Область применения

• Go — детище Google для облака, микросервисов и высоконагруженных систем. Простота и скорость — главные козыри.

• C# — инструмент Microsoft для корпоративного софта, игр на Unity и десктопа под Windows.

Кроссплатформенность

• Go компилируется в один бинарник без зависимостей — запускается где угодно.

• C# работает через .NET Core на разных платформах, но требует рантайм.

Система типов

• Go минималистичен: никакого наследования, только интерфейсы и композиция.

• C# даёт полный ООП-арсенал: наследование, дженерики, функциональные фишки.

Когда что брать

• Go — если пишете API, микросервисы, CLI-утилиты. Когда важны простота деплоя и производительность без магии.

• C# — если нужен Unity, десктоп под Windows или мощная корпоративная экосистема с LINQ и Entity Framework.

➡️ Заглядывайте в Библиотеку шарписта, там тоже хит-парад лучших постов 2025 года

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
10🤔7
🧃 Как вы там на новогодних? Ещё не осеньорились?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6💯6😢1
⚡️ Обработку ошибок в Go не будут менять

Команда разработки Go столкнулась с трудностями при попытке упростить этот процесс через синтаксические изменения языка.

За последние несколько лет разработчики пытались улучшить обработку ошибок через:

• Механизм check/handle в 2018.
• Функцию try в 2019.
• Предложение с оператором «?» в 2024.

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

➡️ Читать размышления разработчиков

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍405👏3😢2
💻 Не только commit и push

Напоминаем вам простые, но полезные команды для работы с git-репозиториями.

1. Отображение истории в виде графа:
git log --graph --oneline --all --decorate


2. Временное сохранение изменений без коммита:
git stash push -m "Описание стэша"
git stash list
git stash apply stash@{0}


3. Поиск по коммитам:
git log -S "поисковая строка"


4. Переименование последних коммитов в интерактивном режиме:
git rebase -i HEAD~3


Вспомнили все команды — ставьте 👍

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🥱10😢2❤‍🔥1👏1
Параллелизм 2.0: оркестрация автономных агентов на Go

В 2026 году мощь Go идеально ложится на задачи управления роем ИИ-агентов. Пока другие пишут простые скрипты, мы строим высоконагруженные системы с автономным принятием решений.

На курсе вы изучите:

— паттерн ReAct: создание «сознательных» ботов на базе LLM;
— работу с n8n для быстрой сборки конвейеров автоматизации;
— протокол MCP от Anthropic для общения между агентами;
— продвинутый RAG для эффективной работы с контекстом.

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

🧨 До 12 января акция «3 в 1»: забирайте курс по ИИ-агентам и ещё два в придачу.

Ворваться в AI-экосистему
🥱112👾1
👨‍💻 ИИ в разработке: страх и адаптация

В июле мы наткнулись на тему в реддите:
Я только что наблюдал, как AI-агент взял задачу в Jira, разобрался в нашей кодовой базе и за несколько минут отправил Pull Request — и это меня действительно пугает.


💬 Что поменялось с тех пор? ИИ вас уже заменил?

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👏6🤔1
🚀 Флаг -cpu: стресс-тесты на разном числе ядер

В начале года рассказывали про этот флаг — он до сих пор остаётся одним из самых недооценённых инструментов для тестирования конкурентного кода.

Флаг -cpu запускает тесты с разными значениями GOMAXPROCS. Указываете список — Go прогоняет тесты для каждого:
go test -cpu=1,2,4,8 -v


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

Зачем это нужно

Гонки данных и дедлоки часто проявляются только при определённом уровне параллелизма. На одном ядре всё работает, на восьми — падает. Флаг -cpu помогает поймать такие баги до продакшена.

Ещё это способ понять, как код масштабируется. Если на 8 ядрах работает не быстрее, чем на 2 — где-то узкое место.

Без флага тесты запускаются с текущим GOMAXPROCS — обычно равен числу ядер. То есть вы проверяете только один сценарий из многих возможных.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
🎮 Minecraft на чистом Go

Прошлой зимой показывали этот проект — полноценный клон Minecraft на Go и OpenGL. Без движков, всё с нуля: рендеринг, физика, генерация мира.

Запуск:
git clone https://github.com/GianlucaP106/minecraft && cd minecraft
go run .


Если хотите разобраться в 3D-графике без Unity и Unreal — исходники открыты.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥313👾2❤‍🔥1
📂 Пакет embed в Go: файлы внутри бинарника

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

Как использовать:
//go:embed hello.txt
var hello string

//go:embed version.json
var version []byte

//go:embed templates/*
templates embed.FS


go build втянет файлы. string для текста, []byte для бинарей, embed.FS для папок.

Плюсы:

+ Один файл для деплоя
+ Файлы защищены от изменений
+ Нет зависимостей от FS окружения

Минусы:

- Большие файлы раздувают бинарник
- Динамические конфиги не подойдут

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143
🌳 Бинарное дерево поиска (BST) в Go

BST — это бинарное дерево, где:

• Значение в левой ветви меньше значения в узле.

• Значение в правой ветви больше значения в узле.

Такое свойство обеспечивает эффективный поиск, вставку и удаление — в среднем за O(log n).

Пример реализации:
// Node — узел бинарного дерева
type Node struct {
Value int
Left *Node
Right *Node
}

// Insert — вставка нового значения в дерево
func (n *Node) Insert(value int) {
if value < n.Value {
if n.Left == nil {
n.Left = &Node{Value: value}
} else {
n.Left.Insert(value)
}
} else if value > n.Value {
if n.Right == nil {
n.Right = &Node{Value: value}
} else {
n.Right.Insert(value)
}
}
}

// Search — поиск значения в дереве
func (n *Node) Search(value int) *Node {
if n == nil {
return nil
}
if n.Value == value {
return n
} else if value < n.Value {
return n.Left.Search(value)
} else {
return n.Right.Search(value)
}
}

// InOrderTraversal — обход дерева в порядке (LNR)
func (n *Node) InOrderTraversal() {
if n == nil {
return
}
n.Left.InOrderTraversal()
fmt.Print(n.Value, " ")
n.Right.InOrderTraversal()
}


Как это работает?

1️⃣ Вставка:

• Если значение меньше текущего узла, идём в левое поддерево.

• Если больше — в правое.

• Если узел пуст, создаём новый.

2️⃣ Поиск:

• Сравниваем искомое значение с текущим.

• Меньше — идём влево, больше — вправо, равное — нашли.

3️⃣ Обход:

• In-order обход (LNR) обходит узлы в отсортированном порядке.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍212😢1
🆚 ORM или чистый SQL

Помним, весной мы спрашивали у вас про подходы к базам в Go. Тогда народ активно спорил про ORM против ручных запросов. А что сейчас?

💬 На чем строите свои проекты сейчас? GORM, Ent, sqlx или чистый SQL? Делитесь в комментах, особенно если что-то поменялось за год

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
1
😄 Как выглядят инструменты после новогодних

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥14😁95
👋 Начинаем подборку лучших постов на 2026

Праздники закончились и с ними осталась подборка лучшего контента за 2025 год.

💬 Админ снова в строю, а вы? Рассказывайте чем занимались 👇

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
7
🛠 go fix для бенчмарков

Классический стиль бенчмарков в Go завязан на b.N, и из-за этого часто появляются b.ResetTimer и другая ручная обвязка.

Инструменты из экосистемы Go умеют автоматически применять замену, чтобы код был проще и меньше ошибался. Один go fix и всё красиво.

Пример:
// До
func Benchmark(b *testing.B) {
s := make([]int, 1000)
for i := range s {
s[i] = i
}
b.ResetTimer()

for range b.N {
Calc(s)
}
}

// После
func Benchmark(b *testing.B) {
s := make([]int, 1000)
for i := range s {
s[i] = i
}

for b.Loop() {
Calc(s)
}
}


📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102
💸 Код подешевел, а софт нет

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

Автор статьи предлагает смотреть на происходящее как на взрыв персонального софта, который живет ровно столько, сколько живет задача.

Скрипт под конкретный DOM сайта, одноразовый парсер банкинга, утилита для своей рутины в проекте, все это стало дешево за счет LLM и CLI first подхода. И это нормально, потому что одноразовость там фича, а не баг. Инструмент сделал свое дело и может спокойно умереть.

Но как только нужен продукт, а не разовая вещь, вступают в игру знакомые расходы, поддержка, изменения окружения, UX, данные, надежность.​
И LLM тут не спасают, они не проектируют архитектуру и не несут ответственность за системные решения, этим по прежнему занимаются инженеры.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍214💯4🔥3❤‍🔥1
✏️ Учим Go через практические задачи

Go Quests — это коллекция практических заданий для изучения Go. Репозиторий построен как серия квестов: вы решаете задачу, запускаете тесты и сразу видите, что работает, а что нет.

Каждый квест — отдельная папка с заготовкой кода и набором тестов. Вы дописываете логику, чтобы тесты стали зелёными. Никакой теории ради теории — только код и проверка результата.

➡️ Репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍178🥱6