Библиотека Go-разработчика | Golang (@goproglib) — Telegram-канал | Telegram Dialogs
Telegram Dialogs — логотип
Все каналы
Библиотека Go-разработчика | Golang

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

@goproglib

24.1K подписчиков технологии 💬 Комментарии открыты

Все самое полезное для Go-разработчика в одном канале. Учиться у нас: clc.to/qaSdww По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0 #WXSSA

Последние публикации

Библиотека Go-разработчика | Golang
30.08.2026 12:03 · 👁 1.5K
📎 Библиотека анимаций для терминала Для тех, кто занимается разработкой текстовых интерфейсов на Go, есть интересный инструмент — библиотека sysc-Go. В библиотеке доступны разные категории эффектов: от классического цифрового дождя в стиле «Матрицы» и пламени Doom до красочных фейерверков и подводных анимаций с рыбой. Есть и текстовые эффекты, которые оживляют ASCII-арт — например, огненный текст, эффекты типографики с имитацией печатной машинки или вращающиеся кольцевые анимации. Чистая реализация на Go без зависимостей, удобный CLI-интерфейс с выбором и просмотром всех доступных эффектов, а также встроенный ASCII-редактор с живым предпросмотром. ➡️ Анимировать терминал 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
Библиотека Go-разработчика | Golang
29.08.2026 10:17 · 👁 2.2K
✨ Charm: красивые TUI-приложения на Go Если fmt.Println уже кажется слишком скучным, посмотрите на экосистему ⁠Charm 🤩 🤩 Bubble Tea — фреймворк для интерактивных TUI на Go 🤩 Lip Gloss — стили, цвета, рамки и layout 🤩 Bubbles — готовые компоненты: списки, спиннеры, input и другие 🤩 Gum — интерактивные элементы для shell-скриптов без Go Например, меню выбора в bash: gum choose "deploy" "rollback" "cancel" А если хочется написать полноценный терминальный интерфейс — можно собрать его на Bubble Tea. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
Библиотека Go-разработчика | Golang
28.08.2026 11:00 · 👁 2.5K
📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
Библиотека Go-разработчика | Golang
27.08.2026 11:00 · 👁 3K
🤩 Go tip: вшивайте файлы прямо в бинарник через go:embed Нужны шаблоны, миграции или небольшая статика, но не хочется таскать их рядом с бинарником? import "embed" //go:embed templates/*.html var templatesFS embed.FS Дальше embed.FS можно использовать с html/template, text/template или net/http. templates.ParseFS(templatesFS, "templates/*.html») Можно вшить и отдельный файл: //go:embed version.txt var version string 📌 Файлы попадают в программу при сборке. Изменили ресурс — пересобирайте бинарник. Для шаблонов, миграций и небольшой статики — отличный вариант. Для огромных ассетов — уже стоит подумать о другом подходе. ⁠🔗 Документация 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
Библиотека Go-разработчика | Golang
26.08.2026 11:04 · 👁 3.1K
✏️ Расстояния между единицами: находим нужный паттерн Дан массив нулей и единиц, нужно проверить, что между любыми двумя единицами находится минимум k нулей. Звучит элементарно, но в реализации легко споткнуться. Массив [1,0,0,0,1,0,0,1] при k=2 валиден: между первой и второй единицей три нуля (достаточно), между второй и третьей — два нуля (достаточно). А вот [1,0,1,0,0,1] при k=2 — нет, потому что первые две единицы разделены только одним нулём. Запоминаем позицию последней найденной единицы. Когда встречаем новую, проверяем расстояние до неё и сразу обновляем позицию. Это будет один проход по массиву: func kLengthApart(nums []int, k int) bool { lastPos := -k - 1 for i := 0; i < len(nums); i++ { if nums[i] == 1 { if i - lastPos - 1 < k { return false } lastPos = i } } return true } Результат: O(n) время, O(1) память. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #ReadySetGo
Библиотека Go-разработчика | Golang
25.08.2026 11:04 · 👁 3.1K
🛠️ sqlc: пишешь SQL → получаешь типобезопасный Go Вместо ORM и ручного Scan можно оставить SQL как есть, а Go-код сгенерировать: -- name: GetAuthor :one SELECT id, name, bio FROM authors WHERE id = $1; sqlc generate После генерации: author, err := queries.GetAuthor(ctx, id) sqlc проверяет запросы относительно схемы и генерирует типизированные структуры и методы. Поддерживаются PostgreSQL, MySQL и SQLite. ⚡️ Документация 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
Библиотека Go-разработчика | Golang
24.08.2026 11:05 · 👁 3.2K
🛡 Go tip: не открывайте локальный сервис наружу случайно Если HTTP-сервис должен быть доступен только на вашей машине, слушайте 127.0.0.1, а не 0.0.0.0: srv := &http.Server{ Addr: "127.0.0.1:8001", } 127.0.0.1 — только локальный интерфейс. А: Addr: "0.0.0.0:8001» означает прослушивание всех IPv4-интерфейсов. 📌 Для локальных админок, debug-сервисов и dev-инструментов это простая настройка, которую легко забыть — и случайно выставить сервис в сеть. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
Библиотека Go-разработчика | Golang
23.08.2026 11:02 · 👁 3.4K
💡 Как append растит слайс Все знают, что append добавляет элемент в слайс. А вот что происходит, когда место в массиве кончилось, знают не всегда, и как раз тут прячется пара неожиданностей. 🔵 Пока есть запас У слайса есть len и cap. Пока len меньше cap, append дописывает элемент прямо в тот же массив и возвращает слайс, который смотрит туда же. Никакого копирования, дёшево. Именно поэтому два слайса, делящие один массив, могут внезапно перетирать данные друг друга при append в один из них. 🔵 Когда запас кончился Как только cap исчерпан, рантайм выделяет новый массив побольше, копирует туда старые элементы и возвращает слайс уже на новую память. С этого момента старый и новый слайс не связаны, и запись в один не видна в другом. Отсюда правило, которое многих спасало от багов. Всегда присваивайте результат обратно. s = append(s, x) 🔵 На сколько растёт Точный коэффициент это деталь реализации, которая менялась от версии к версии, поэтому закладываться на конкретное число не стоит. Грубый ориентир такой. Маленькие слайсы растут примерно вдвое, большие прибавляют около четверти за раз, а переход между режимами сглажен в районе нескольких сотен элементов. Смысл в том, чтобы амортизировать стоимость и не копировать массив на каждом добавлении. Если вы заранее знаете примерный размер, выделяйте вместимость сразу. s := make([]int, 0, n) for i := 0; i < n; i++ { s = append(s, f(i)) } Так вы избегаете череды перевыделений и копирований, а заодно снимаете нагрузку со сборщика мусора. На горячих циклах это заметно. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoDeep
Библиотека Go-разработчика | Golang
22.08.2026 12:53 · 👁 3.2K
⚙️ Go tip: errgroup вместо ручного управления группой горутин Нужно параллельно выполнить несколько задач, остановиться при ошибке и ограничить количество одновременно работающих операций? Вместо WaitGroup + канала ошибок можно использовать golang.org/x/sync/errgroup: g, ctx := errgroup.WithContext(ctx) g.SetLimit(8) for _, url := range urls { g.Go(func() error { return fetch(ctx, url) }) } if err := g.Wait(); err != nil { return err } WithContext отменяет контекст при первой ошибке, SetLimit(8) держит максимум 8 активных горутин, а Wait() возвращает ошибку. 🔗 Источник 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
Библиотека Go-разработчика | Golang
21.08.2026 11:01 · 👁 3.5K
🔎 Go tip: откуда в проекте взялась эта зависимость? Нашли незнакомый модуль в go.mod и не понимаете, кто его подтянул? Поможет: go mod why -m golang.org/x/text Go покажет цепочку зависимостей, из-за которой модуль оказался нужен проекту. Например: your-project ↓ github.com/example/api ↓ golang.org/x/text 📌 Полезно перед чисткой go.mod, обновлением зависимостей или разбором supply chain. А если нужно посмотреть, какие модули вообще используются, пригодится: go mod graph 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.