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

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

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

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

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

#WXSSA
Download Telegram
✏️ nil-срез vs nil-мапа: почему append проходит, а запись в мапу нет

В Go nil-срез — это валидный срез, просто пустой с длиной и ёмкостью ноль. При вызове append на nil-срезе Go автоматически создаёт новый массив нужного размера и возвращает новый срез с элементами. Поэтому добавлять значения можно сразу.

nil-мапа — это неинициализированная структура, которая не хранит данные. Попытка записать в такую мапу приведёт к панике. Мапу обязательно надо инициализировать с помощью make, чтобы она работала.

var a []int
a = append(a, 4, 5, 6) // работает, потому что Go выделяет память
fmt.Println(a) // [4 5 6]

var m map[int]int
// m[1] = 1 // паника, nil-мапа не инициализирована
m = make(map[int]int)
m[1] = 1 // теперь всё ок


🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2👏1
📎 Библиотека анимаций для терминала

Для тех, кто занимается разработкой текстовых интерфейсов на Go, есть интересный инструмент — библиотека sysc-Go.

В библиотеке доступны разные категории эффектов: от классического цифрового дождя в стиле «Матрицы» и пламени Doom до красочных фейерверков и подводных анимаций с рыбой.

Есть и текстовые эффекты, которые оживляют ASCII-арт — например, огненный текст, эффекты типографики с имитацией печатной машинки или вращающиеся кольцевые анимации.

Чистая реализация на Go без зависимостей, удобный CLI-интерфейс с выбором и просмотром всех доступных эффектов, а также встроенный ASCII-редактор с живым предпросмотром.

➡️ Анимировать терминал

🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍63👾1
🎉 Большая распродажа Proglib Academy — минус 40% на всё!

📚 Выбирай свой курс:

▫️ «Экспресс-курс по математике для DS» — получи фундамент для построения успешной карьеры в Data Science
▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «Специалист по ИИ» или «AI-агенты», или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.
▫️ «Архитектуры и шаблоны проектирования» — чтобы писать гибкий, масштабируемый код как мидл+ разработчик.
▫️ «Основы IT для непрограммистов» — для тех, кто хочет понимать, как устроены технологии, не будучи разработчиком.

🎁 Бонусы ноября:

▫️ Розыгрыш MacBook Pro 14 — купи любой курс и пройди 2 недели обучения до 30 ноября.

▫️ Бесплатный тест по математике — за 5 минут покажет, какие темы стоит подтянуть перед DS.

👉 Выбрать курс со скидкой
🌚3
📎 Как лишние // indirect-зависимости убивают ваш Go-проект

Go сам отслеживает, какие нужны зависимости, и добавляет к ним транзитивные (// indirect) при go get. Когда библиотека удалена, многие верят, что go mod tidy наведёт полный порядок, но на деле она осторожно подходит к удалению и может оставить кучу неиспользуемого хлама.

Рабочий способ чистки такой: коммитим текущее состояние, вручную убираем все строки // indirect из go.mod, стираем go.sum, затем запускаем go mod tidy. Система пересчитает зависимости и вернёт только реально используемые. После этого сборка станет ощутимо быстрее, а зависимостей станет меньше.

Для контроля лучше раз в квартал повторять процедуру и всё время использовать go mod tidy перед коммитами.

🔹 Алгоритмы и структуры данных
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29
✏️ Что такое Trie и когда его использовать

Trie (префиксное дерево) — это структура данных, которая помогает эффективно хранить и искать строки. В Go она полезна, когда нужно быстро проверять префиксы, делать автодополнение или поддерживать поиск с подстановочными символами.

Когда стоит применять Trie

• Когда у вас большой словарь или список слов, требующих быстрого поиска

• Для функций startsWith(prefix), когда нужно быстро проверить, есть ли слова с заданным префиксом

• Когда нужны частичные совпадения с wildcard-символами — например, поиск по шаблонам с точками или звездочками

• Для реализации игр со словами, таких как Boggle, Scrabble или Wordle

• В автодополнении и DNS-lookup

• Для любых задач, где важна быстрая проверка строк по префиксу

Базовая структура:
package main

type TrieNode struct {
children map[rune]*TrieNode
isEnd bool // Флаг конца слова
value interface{} // Опционально: значение, связанное со словом
}

type Trie struct {
root *TrieNode
}

func NewTrie() *Trie {
return &Trie{
root: &TrieNode{
children: make(map[rune]*TrieNode),
},
}
}


Основные операции

Вставка слова:
func (t *Trie) Insert(word string) {
node := t.root

for _, char := range word {
if _, exists := node.children[char]; !exists {
node.children[char] = &TrieNode{
children: make(map[rune]*TrieNode),
}
}
node = node.children[char]
}

node.isEnd = true
}


Поиск слова:
func (t *Trie) Search(word string) bool {
node := t.root

for _, char := range word {
if child, exists := node.children[char]; exists {
node = child
} else {
return false
}
}

return node.isEnd
}


Автодополнение по префиксу:
func (t *Trie) StartsWith(prefix string) []string {
node := t.root

// Находим узел префикса
for _, char := range prefix {
if child, exists := node.children[char]; exists {
node = child
} else {
return []string{} // Префикс не найден
}
}

// Собираем все слова с этим префиксом
var results []string
t.dfs(node, prefix, &results)
return results
}

func (t *Trie) dfs(node *TrieNode, current string, results *[]string) {
if node.isEnd {
*results = append(*results, current)
}

for char, child := range node.children {
t.dfs(child, current+string(char), results)
}
}


Использование префиксного дерева значительно ускоряет операции поиска и автодополнения по сравнению с простыми Map или Set. Хотя Trie требует больше памяти, выигрыш в скорости обычно оправдывает этот расход.

🔹 ML для старта в Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍175
📰 Дайджест недели

Прошла 47 неделя 2025 года. Вспомним какая она была.

Экосистема Go в 2025

Go отмечает 16 лет, оставаясь популярным выбором для бэкендов и инфраструктуры. В 2025 растет использование фреймворков Gin и Fiber, тестовых библиотек testify и gomock, а AI-помощники активно интегрируются в рабочие процессы разработчиков

Centrifuge v0.38.0

Педагоги в Казахстане получат доступ к ChatGPT Edu

Revive v1.13.0

Google выпустили VS Code 2

Google запустили Antigravity — новую платформу для разработки программного обеспечения, ориентированную на работу с автономными AI-агентами.

🔸 Алгоритмы и структуры данных
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Ранняя пенсия с миллионами

$10-15 млн к 28 годам — звучит круто. Но стоит ли так рано бросать всё и уходить в свободное плавание?

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

💬 А вы готовы уйти с работы, имея такой запас? Или работа для вас — это больше, чем просто деньги?

🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚8😁4
⚙️ Генерация CRUD-кода

protoc-gen-crud — это плагин для Protocol Buffers, который генерирует интерфейсы и реализации CRUD-операций.

Он создаёт два файла для каждого proto-файла: общий файл с интерфейсами (.pb.crud.go) и файл с конкретной реализацией для выбранной базы данных.

Поддерживаются основные операции создания, чтения, обновления и удаления как для SQLite, так и для PostgreSQL. Есть возможность работать с уникальными и составными ключами, временными метками, а также частичными обновлениями.

Установка сводится к добавлению плагина в PATH и запуску protoc с указанием параметра --go-crud_out.

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

🔸 Алгоритмы и структуры данных
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
3👾1
📊 А правда, что математика в Data Science не нужна?

Нет. Без неё вы не пройдёте собес и не поймёте, почему модель ведёт себя странно. Линал, матан и вероятности — это база, без которой работа в ML превращается в угадайку.

🔥 Эту базу можно собрать за 2 месяца на экспресс-курсе «Математика для Data Science».

👩‍🏫 Кто ведёт курс:

Мария Тихонова
PhD, руководитель исследовательского направления в SberAI, доцент ВШЭ.

→ Диана Миронидис
Преподаватель ВШЭ, автор научпоп-материалов по математике для блога МТС.

→ Ксения Кондаурова
Преподаватель преподаватель T-Банка, автор курсов ЦУ и Edutoria.

→ Маргарита Бурова
Академический руководитель программ по аналитике и ML, Wildberries & Russ.

🎁 Что сейчас доступно:

→ бесплатный тест, чтобы узнать свой уровень математики;
→ скидка 40% до 30 ноября;
→ если оплатить до конца ноября, курс «Базовая математика» в подарок.

👉 Пишите менеджеру, если хотите попасть в поток
😁41🌚1
✏️ Проверка двоичных префиксов

В задаче нам дан массив из 0 и 1, который представляет собой двоичное число. Нужно для каждого элемента определить, делится ли число, образованное подмассивом от начала до текущей позиции, на 5.

Алгоритм решения задачи следующий:

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

Код решения:
func prefixesDivBy5(nums []int) []bool {
result := make([]bool, len(nums), len(nums))
var i = 0
var num int
for _, d := range nums {
num = ((num << 1) | d) % 5
result[i] = num == 0
i++
}
return result
}


🔸 Основы IT для непрограммистов
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib

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

#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
5🥱2👍1
🎧 Топ-вакансий для Go-разработчиков за неделю

Golang-разработчик — от 200 000 на гибрид в МСК

Software Engineer — удалёнка по Испании с ЗП от 3 650 €

Golang разработчик в московский офис.

➡️ Еще больше топовых вакансий — в нашем канале Go jobs

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

#GoWork
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱81
👨‍💻 Где сидят настоящие гошники

Мы знаем, что вокруг Go много полезного контента — от блогов и телеграм-каналов до форумов и YouTube-каналов. А может вы автор такого контента?

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

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

#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
😁51
🤝 Перестаньте ждать, пока вас найдут

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

Есть более прямой маршрут к реальному собеседованию. Если выходить сразу на CTO, тимлидов или фаундеров, общение начинает строиться с людьми, которые действительно принимают решение о найме и понимают ценность конкретных технических навыков.

➡️ Действуйте, ищите, откликайтесь

🔸 Специалист по ИИ
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🛠 Чанки как взрослый способ резать срезы на части

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

В новых версиях Go появился удобный способ обходить данные чанками через итераторы. Это позволяет не собирать все чанки в память а сразу обрабатывать их в цикле range.

Пример:
package main

import (
"fmt"
"slices"
)

func main() {
data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}

for chunk := range slices.Chunk(data, 3) {
fmt.Println("chunk:", chunk)
// здесь можно обрабатывать батч
}
}


Цикл for range получает каждый чанк по очереди и не нужно самому писать арифметику индексов. Код остается компактным но при этом прозрачным для чтения.

🔹 Экспресс-курс «Математика для Data Science»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37🤩52🥱1
🔒 Две SSH дыры залатаны

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

В результате процесс мог быть эффективно выведен из строя по памяти, а это CVE-2025-58181.

Вторая уязвимость находится в ssh/agent. При обработке запросов на добавление новой identity агент не валидировал длину входного сообщения, и при некорректном размере происходило чтение за пределами буфера, заканчивающееся паникой.

Этот сценарий описан как CVE-2025-47914 и классифицирован как DoS по линии неверной валидации размеров сообщений.

➡️ Источник

🔹 Основы IT для непрограммистов
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoLive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
🔥 На рынке сейчас математика — снова король: AI растёт быстрее, чем вузы успевают обновлять программы. Мы же перестраиваем курс под индустрию мгновенно.

Хочешь наконец разобраться в математике для DS, а не гуглить «что такое градиент» перед собесом?

Новый курс «Математика для разработки AI-моделей» — это 8 недель плотной подготовки, свежая программа и только актуальные темы, которые реально нужны в ML.

Что в курсе:

→ линал, производные, градиенты, вероятности, статистика;
→ практика на Python и 3 большие ДЗ;
→ живые вебинары + разбор ваших вопросов;
→ финальный мини-проект, который можно положить в портфолио;
→ доступ к материалам и чат с экспертами.

Для старта нужны только школьная математика и базовый Python.

🎁 Бонусы ноября:

— скидка 40% до 30 ноября;
— «Базовая математика» в подарок при оплате;
→ бесплатный тест уровня математики.

👉 Записывайся на курс
🥱21🤔1😢1
Ещё один проект написали на Go

Aero Arc Relay — свежий опенсорсный сервис на Go для приёма телеметрии по MAVLink и фанаута в облачные хранилища. Команды до сих пор клепают свои одноразовые пайплайны под S3/GCS/лог‑файлы, а потом ловят тихие потери данных и хрупкий бэкпрешер.

Проект позиционируется как асинхронный, буферизованный и отказоустойчивый релей: он принимает MAVLink (UDP/TCP/serial через gomavlib), заворачивает сообщения в единый TelemetryEnvelope и раскидывает в несколько sinks одновременно.

В v0.1 уже есть S3, Google Cloud Storage, Kafka и локальные файлы с ротацией плюс метрики Prometheus, health/ready пробы и аккуратное выключение по контексту под контейнеры.

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

🔹 Математика для Data Science
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

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

#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1
💳 Как выбить зарплату побольше

Собрали для вас в карточках 4 стратегии для торгов на собеседовании. Есть ещё несколько, которые подробно описаны в статье.

🔸 Специалист по ИИ
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib

🐸 Библиотека Go-разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7👍5🤔2🥱1