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

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

رفتن به کانال در Telegram

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

نمایش بیشتر

📈 تحلیل کانال تلگرام Библиотека Go-разработчика | Golang

کانال Библиотека Go-разработчика | Golang (@goproglib) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 24 067 مشترک است و جایگاه 5 400 را در دسته فناوری و برنامه‌ها و رتبه 27 060 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 24 067 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 05 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 8 و در ۲۴ ساعت گذشته برابر 4 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 16.23% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 8.69% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 3 906 بازدید دریافت می‌کند. در اولین روز معمولاً 2 091 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 23 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند навигация, лучшее_из_библиотеки_2025, git, string, golive تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“Все самое полезное для Go-разработчика в одном канале. Учиться у нас: clc.to/qaSdww По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a4a8c24689c2151c752af0 Заявка: 8137752389”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 06 اکتبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

24 067
مشترکین
+424 ساعت
-97 روز
+830 روز
آرشیو پست ها
🎓 Тестовый собес с Go Senior из Гамбурга, с опытом работы в Yandex и Uzum [ + эталонные ответы на 50 сложных вопросов в пода
🎓 Тестовый собес с Go Senior из Гамбурга, с опытом работы в Yandex и Uzum [ + эталонные ответы на 50 сложных вопросов в подарок ] В четверг, 8 октября, в 19:00 МСК приходи онлайн на тестовое собеседование. Можно посмотреть, как всё устроено изнутри, и понять, насколько ты готов к такому интервью. Интервьюер: Маруф Караев — Senior Software Engineer из Гамбурга, ex-Yandex, ex-Uzum. Как это будет: 📂 Маруф задаст разработчику-добровольцу те вопросы и задачи, которые даёт кандидатам на своих интервью. Заранее их никто не знает; 📂 После каждого ответа Маруф даст обратную связь: что прозвучало сильно, а что стоило раскрыть иначе. Так станет понятнее, на что обращают внимание на собесе; 📂 В конце сможешь задать Маруфу любой вопрос и получить развёрнутый ответ; Эфир проходит в рамках менторской программы ШОРТКАТ для Go-разработчиков, которые хотят сменить работу и вырасти в грейде и зарплате. 🎁 Подарок для всех, кто зарегается на веб: файл с эталонными ответами на 50 сложных вопросов с Go-интервью 🔥 Жми на кнопку, чтобы попасть на эфир и забрать подарок ↓ @shortcut_go_bot Реклама. О рекламодателе.

🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации AWS-сервисов. Он помогает разработчи
🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации AWS-сервисов. Он помогает разработчикам тестировать приложения без облака.
Проект подходит для unit-тестов, где нужен мок для облачных вызовов. Устанавливается через go install github.com/sivchari/kumo@latest. Запускается как прокси, а SDK настраивается на локальный эндпоинт.
Поддерживает базовые операции над S3: создание бакетов, загрузку объектов, список файлов. Для DynamoDB эмулирует таблицы, put/get item. Конфиг через флаги или env. ➡️ Репозиторий 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoLive

👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сложно. Нужно разобраться с JSON-RPC фреймингом, маршрутизацией сообщений, типами LSP, управлением жизненным циклом соединения. И всё это до того, как начнёшь писать саму языковую логику. go-lsp берёт всё это на себя. Библиотека реализует LSP 3.17 и даёт чистый интерфейс, где вы просто описываете, что ваш сервер умеет делать. go-lsp состоит из трёх пакетов. jsonrpc отвечает за JSON-RPC 2.0 поверх io.ReadWriteCloser. lsp содержит Go-типы для всех структур протокола, без логики. server связывает всё вместе: принимает хендлер, смотрит какие интерфейсы он реализует и автоматически регистрирует соответствующие LSP-методы. Устанавливаем:

go get github.com/owenrumney/go-lsp
Минимальный сервер с поддержкой hover:

package main

import (
    "context"
    "os"

    "github.com/owenrumney/go-lsp/lsp"
    "github.com/owenrumney/go-lsp/server"
)

type Handler struct{}

func (h *Handler) Initialize(ctx context.Context, params *lsp.InitializeParams) (*lsp.InitializeResult, error) {
    return &lsp.InitializeResult{
        Capabilities: lsp.ServerCapabilities{
            HoverProvider: &lsp.HoverOptions{},
        },
    }, nil
}

func (h *Handler) Shutdown(ctx context.Context) error {
    return nil
}

func (h *Handler) Hover(ctx context.Context, params *lsp.HoverParams) (*lsp.Hover, error) {
    return &lsp.Hover{
        Contents: lsp.MarkupContent{
            Kind:  lsp.MarkupKindMarkdown,
            Value: "Hello from the server",
        },
    }, nil
}

func main() {
    srv := server.NewServer(&Handler{})
    if err := srv.Run(context.Background(), server.RunStdio()); err != nil {
        os.Exit(1)
    }
}
Сервер сам понимает, что хендлер поддерживает hover, потому что он реализует интерфейс HoverHandler. Вручную регистрировать методы не нужно. Хотите добавить completion — реализуйте CompletionHandler. Обязательный интерфейс только один — LifecycleHandler с методами Initialize и Shutdown. Всё остальное реализуете по мере необходимости. ➡️ Репозиторий 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true / 1 false 👍 — 1 false / 0 true 👾 —
🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true / 1 false 👍 — 1 false / 0 true 👾 — panic при втором чтении 👇 Правильный ответ (нажми, чтобы прочитать): ❤️ — 1 true / 0 false После close(ch) уже записанное значение можно получить обычным чтением. Когда канал пуст и закрыт, чтение возвращает нулевое значение типа и ok == false. ⚠️ Закрытый канал не становится сразу «пустым» — его буфер всё ещё можно прочитать. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работает уже не так, как раньше: вместо ст
👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работает уже не так, как раньше: вместо старой схемы с overflow buckets используется Swiss Tables.
И там довольно много интересного: хеш делится на части, поиск идёт группами по 8 слотов, SIMD сразу сравнивает несколько значений, а при росте таблица может дробиться.
📍 В статье всё это разбирают буквально по шагам — от m["cow"] = 4 до устройства directory и таблиц. Если хочется понять, почему Go map работает быстро, а не просто знать, что он O(1) — почитать стоит. 🐸 Библиотека программиста

🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурного кода — например, отдельно для amd64 и arm64.
➡️ Теперь экспериментальный пакет simd предлагает единый интерфейс для разных CPU: AVX/AVX2/AVX512, NEON и Wasm SIMD. Размер вектора при этом не зашит в типы, а при отсутствии аппаратной поддержки операции могут выполняться через эмуляцию.
Пока API экспериментальный, но идея простая: один векторизованный код вместо отдельных реализаций под каждую архитектуру. 🔗 Подробнее о том, как это реализовано внутри Go 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoLive

💡 Код работает. А data race уже есть В Go можно записать значение в одной горутине, прочитать в другой — и получить именно т
💡 Код работает. А data race уже есть В Go можно записать значение в одной горутине, прочитать в другой — и получить именно тот результат, который ожидал. Проблема в том, что Go этого не гарантирует без синхронизации. Например, даже такой паттерн:

msg = "hello"
done = true

for !done {}
fmt.Println(msg)
может выглядеть абсолютно логично, но содержит две data race. 🔜 В разборе наглядно показывают, почему так происходит: от работы компилятора и CPU до memory model Go. А затем — чем правильно заменить самодельный флаг:
atomic → Mutex → WaitGroup → channels → sync.Once
Отдельно разбирается интересный эксперимент, где две горутины иногда обе читают 0, хотя на первый взгляд это кажется невозможным. Если с конкурентностью в Go приходится работать не только на уровне «поставь mutex», этот разбор стоит посмотреть. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

💥 TCP/IP: что происходит с данными в сети Когда Go-приложение отправляет данные по сети, они проходят несколько уровней TCP/
💥 TCP/IP: что происходит с данными в сети Когда Go-приложение отправляет данные по сети, они проходят несколько уровней TCP/IP. Каждый отвечает за свою часть доставки. 1️⃣ Канальный Отвечает за передачу данных внутри конкретной сети: Ethernet, Wi-Fi и т. д. Здесь работают MAC-адреса и механизмы доступа к среде. 2️⃣ Межсетевой Здесь появляется IP — адресация и маршрутизация пакетов между сетями. Маршрутизаторы определяют, куда отправить пакет дальше. 3️⃣ Транспортный Определяет, как данные доставляются между хостами. Основные протоколы: TCP — соединение, порядок данных, подтверждения и повторная передача; UDP — минимальные накладные расходы, без гарантии доставки и порядка. 4️⃣ Прикладной Протоколы, с которыми непосредственно работают приложения: HTTP, DNS, SMTP, SSH и другие. TCP vs UDP
У TCP заголовок сложнее: в нём есть sequence number, acknowledgement, window и другие поля, необходимые для управления передачей. У UDP всё проще: порты, длина, checksum и данные.
В Go разницу особенно хорошо видно при работе с net.TCPConn и net.UDPConn. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

🔴 Встроенные функции len, make, panic — встроенные функции Go, которые можно использовать без импорта пакетов. ❓ Но почему тогда len указана в документации builtin как:

func len(v Type) int
builtin — специальный пакет только для документации. Он не компилируется, а Type — условная заглушка для типа аргумента. При этом built-in — не обычные функции. У них нет стандартных Go-типов: компилятор обрабатывает их вызовы особым образом. 🟡 Например, len(s) для среза может быть преобразован компилятором в получение длины из внутреннего представления среза. Для make, panic и других built-in механизм уже другой. Поэтому никаких дженериков вроде len[T any](s []T) в исходном коде нет — built-in являются специальными конструкциями языка, а builtin лишь описывает их для документации. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

+3
🤩 Go с нуля: серия базовых шпаргалок Собрали путь от Hello, World! до goroutines, channels и context.
День 1 — синтаксис, модули и инструменты День 2 — типы, функции, слайсы, map и ошибки День 3 — интерфейсы, структуры, методы, указатели и композиция День 4 — goroutines, channels, select, WaitGroup, Mutex и context
Некоторые формулировки в карточках упрощены для новичков: порядок map не гарантирован, поведение slice зависит от backing array, а WaitGroup и Mutex решают разные задачи. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — [1 2 3 4 5] / [1 2 10] 🔥 — [1 2 10 4 5] / [1 2 10] 👍 — [1 2 3 4
🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — [1 2 3 4 5] / [1 2 10] 🔥 — [1 2 10 4 5] / [1 2 10] 👍 — [1 2 3 4 5] / [1 2 3] 👇 Правильный ответ (нажми, чтобы прочитать): 🔥 — [1 2 10 4 5] / [1 2 10] b := a[:2] создаёт слайс, который использует тот же backing array, что и a. У b остаётся capacity до конца исходного массива, поэтому append не выделяет новый массив, а записывает 10 в третий элемент. В итоге изменяется и a: [1 2 10 4 5] [1 2 10] 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

🛠 Rune — open-source IDE и terminal multiplexer на Go Rune объединяет IDE, терминал и AI-agent в одном приложении. Что интересного:
• GPU-ускоренный интерфейс; • native graphics: OpenGL на Linux и Metal на macOS; • language intelligence из коробки; • встроенный agent; • терминалы, вкладки и окна в едином workspace; • E2E-зашифрованная сеть между экземплярами Rune.
Без Electron — приложение использует нативный графический pipeline. Установить:

curl -fsSL https://rune.build/install.sh | sh
🔗 GitHub 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction

🤩 SQLite вместо отдельного брокера в Go Watermill поддерживает SQLite Pub/Sub — сообщения передаются между publisher и subscriber через таблицы SQLite. Что это даёт: — не нужен Kafka, RabbitMQ или Redis; — сообщения хранятся в SQLite-файле; — данные переживают перезапуск приложения; — удобно для небольших сервисов и локальной разработки. 🔴 Публикация:

publisher, err := wmsqlitemodernc.NewPublisher(
    db,
    wmsqlitemodernc.PublisherOptions{
        InitializeSchema: true,
        Logger:           logger,
    },
)

msg := message.NewMessage(
    watermill.NewUUID(),
    []byte(`{"message":"Hello, world!"}`),
)

err = publisher.Publish("messages", msg)
Подключается как обычный Pub/Sub Watermill — при этом отдельный брокер не требуется. ⚠️ SQLite Pub/Sub всё ещё Beta: реализация стабильна, но недостаточно проверена в production. Для высоких нагрузок учитывайте ограничения SQLite. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика

⚡️ Go 1.27 ускоряет небольшие аллокации В Go 1.27 появился size-specialized memory allocation — специальные пути выделения памяти для небольших объектов. Что изменилось: — аллокации объектов размером менее 80 байт могут стать быстрее на 20–30%; — в программах с большим количеством аллокаций общий прирост может достигать 1%; — максимальный эффект ожидается для объектов на 16 и 24 байта. 🔴 Почему это работает? Раньше runtime использовал общий путь mallocgc, которому нужно определить размер объекта, класс аллокации и дополнительные параметры. 🔴 Теперь для часто встречающихся размеров есть специализированные функции. Они заранее знают размер объекта и могут:
— быстрее очищать память; — не вычислять класс аллокации повторно; — эффективнее выполнять служебные операции; — использовать более короткий fast path.
Особенно часто такие размеры встречаются у структур, интерфейсов, строк и слайсов. 🔗 Ничего менять в коде не нужно. Чтобы получить улучшения, достаточно пересобрать приложение с Go 1.27. При необходимости эксперимент можно отключить: ```bash GOEXPERIMENT=nosizespecializedmalloc 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoLive

🛠 Напишите конфиг сами viper — самая частая рекомендация для конфигурации в Go. Он умеет читать файлы, переменные окружения, удалённые источники и устанавливать дефолты. Звучит удобно, но на практике создаёт проблемы. 🔴 В чём проблема Viper тянет большое дерево зависимостей. Методы GetString, GetInt и подобные не типизированы — значения возвращаются в рантайме без проверки на этапе компиляции. Ключи конфига разбросаны по коду как строковые литералы. При нетривиальном использовании поведение при слиянии и приоритетах конфигов требует чтения исходников. 🔴 Что использовать Структура с тегами и yaml.NewDecoder:

type Config struct {
    DatabaseURL string      `yaml:"database_url"`
    Kafka       KafkaConfig `yaml:"kafka"`
    Server      ServerConfig `yaml:"server"`
}

func Load(path string) (*Config, error) {
    f, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer f.Close()

    var cfg Config
    if err := yaml.NewDecoder(f).Decode(&cfg); err != nil {
        return nil, err
    }
    return &cfg, nil
}
Переменные окружения добавляются вручную через os.Getenv там, где это нужно. 🔴 Что получаем Полностью типизированный конфиг. Никаких строковых ключей. Граф зависимостей, который можно проверить за секунды. Код, который вы полностью контролируете. Для JSON-конфига подход тот же, только с encoding/json. Пакет gopkg.in/yaml.v3 — единственная внешняя зависимость, и та минимальная. 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction

🔴 Тестовый собес с Go Senior с опытом работы в Ozon, ex. Ситидрайв в этот четверг [+ разбор 50 сложных вопросов в подарок ]
🔴 Тестовый собес с Go Senior с опытом работы в Ozon, ex. Ситидрайв в этот четверг [+ разбор 50 сложных вопросов в подарок ] 17 сентября (в этот четверг!) в 19:00 по МСК приходи онлайн, чтобы посмотреть на настоящее интервью на Middle Go-разработчика! Собеседование проведёт Даниил Динько - Senior Backend Engineer, ex. TechLead tier-3 world cybercrime, ex. Senior Go в Ozon, ex. Ситидрайв. Как это будет: 📂 Даниил задаст разработчику вопросы и задачи, которые могут спросить на реальном собесе; 📂 После каждого ответа респондента ты услышишь подробный комментарий от ментора и поймёшь, чего на самом деле ожидает собеседующий на интервью; 📂 В конце сможешь задать любой вопрос Даниилу и получить на него развёрнутый ответ; Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. И ты можешь посмотреть его бесплатно 🔥 Только завтра, в прямом эфире! 🎁 Подарок для всех, кто зарегается на веб — файл с ОТВЕТАМИ НА 50 СЛОЖНЫХ ВОПРОСОВ с Go-собеседований 🔥 Переходи в бот, чтобы попасть на эфир и забрать подарок 👉 @shortcut_go_bot Реклама. О рекламодателе.

🔥 Шейдеры на Go: как оживить игру с помощью кода В Ebitengine шейдеры пишутся на Kage — языке с Go-подобным синтаксисом. С и
🔥 Шейдеры на Go: как оживить игру с помощью кода В Ebitengine шейдеры пишутся на Kage — языке с Go-подобным синтаксисом. С их помощью можно создавать эффекты прямо на уровне пикселей:
— маска повреждений зданий; — «дрожащий» рукописный текст; — ретро-CRT и глитчи; — зацикленная анимация текстур; — эффект строительства зданий.
➡️ В статье — практические примеры из игр Roboden и Decipherism, а также разбор Fragment(), текстур, uniform-параметров и DrawRectShader(). 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoToProduction

😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потер
😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода. 🔘 Поговорим о том: — когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge. ✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после. ⬇️ 18 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок 💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре. 🔗 Зарегистрироваться на вебинар⁠