
⚡️ Заказывайте в AI-каталоге — получайте скидку!
5% скидка на размещения в каналах, которые подобрал AI. Промокод: TELEGA-AI
Подробнее

РегистрацияВойтиВойти
Скидка 3,5% на первые три заказа
Получите скидку на первые три заказа!
Зарегистрируйтесь и получите скидку 3,5% на первые рекламные кампании — промокод активен 7 дней.
39.7

Golang книги
5.0
17
Интернет технологии
466
11
Golang или GO язык программирования от google. Авторский канала с книгами GO, который содержит активную аудиторию GO разработчиков
Поделиться
В избранное
Купить рекламу в этом канале
Формат:
keyboard_arrow_down
- 1/24
- 2/48
- 3/72
- Нативный
- 7 дней
- Репост
1 час в топе / 24 часа в ленте
Количество:
keyboard_arrow_down
- 1
- 2
- 3
- 4
- 5
- 8
- 10
- 15
Стоимость публикации:
local_activity
12 303.48₽12 303.48₽local_mall
0.0%
Осталось по этой цене:0
Последние посты канала
«Go 1.25 interactive tour» — отличный обзор ключевых новинок, запланированных для Go 1.25 (релиз — август 2025)
Основные моменты:
1. Синтетическое время для тестов (synctest)
Новая библиотека testing/synctest позволяет использовать «фейковый» таймер для тестов, без реального ожидания:
🧪 Использование synctest.Test для "синтетического времени"
- synctest.Test(t, func(t *testing.T) {...}) запускает функцию в изолированном "пузыре", где:
- функции пакета time используют фиктивные часы;
- если все горутины заблокированы (например, time.Sleep, select без case), время продвигается вперед автоматически, чтобы "разблокировать" эти операции.
✅ Пример теста:
func TestReadTimeout(t *testing.T) {
synctest.Test(t, func(t *testing.T) {
ch := make(chan int)
_, err := Read(ch)
if err == nil {
t.Fatal("expected timeout error, got nil")
}
})
}{}
Здесь мы проверяем, что Read действительно отдает ошибку "timeout", без реального ожидания 60 секунд — synctest просто симулирует, что они прошли.
🕰 Как это работает?
Внутри synctest.Test:
- Время начинается с 2000-01-01T00:00:00Z;
- Когда все горутины заблокированы, время продвигается до следующего события (time.After, time.Sleep и т.д.);
- Это позволяет сразу активировать нужные ветки кода, которые зависят от времени, без настоящих задержек.
⚠️ Ограничения
Внутри synctest.Test нельзя использовать:
t.Run(...)
t.Parallel()
t.Deadline()
{}
Пример неверного использования:
synctest.Test(t, func(t *testing.T) {
t.Run("subtest", func(t *testing.T) {
t.Log("fail!") // это работать не будет
})
})
{}
testing/synctest — это инструмент для тестирования кода, зависящего от времени, без реального ожидания, что делает тесты мгновенными и стабильными. Идеально подходит для timeout, retry, delays, ticker, и других случаев, когда вы хотите протестировать "прошло ли время", но не хотите реально ждать.
2. JSON v2 — серьезный апдейт
json/v2 вводит новые функции, включая MarshalToFunc, UnmarshalFromFunc и более гибкую систему маршаллинга с пользовательскими функциями.
Пример:
json.Marshal(vals, json.WithMarshalers(marshalers)){}
👉 Подробно можно почитать здесь
3. Container-aware GOMAXPROCS
Теперь Go учитывает ограничения CPU из cgroups – на Docker/Kubernetes GOMAXPROCS автоматически подстраивается под лимит, а не просто равен NumCPU
4. Новый сборщик мусора — Green Tea
Экспериментальный сборщик мусора оптимизирован для больших объёмов мелких объектов, обещают на 10–40 % снижение оверхеда. Включается через GOEXPERIMENT=greenteagc
5. Защита от CSRF (http.CrossOriginProtection)
Добавлен новый тип для отсечения запросов из кросс-доменных источников, анализируя заголовки Sec-Fetch-Site и Origin
6. sync.WaitGroup.Go
Упрощение работы c WaitGroup — теперь можно писать:
wg.Go(func() { /* … */ })
wg.Wait()
{}
Вместо Add + Done
7. Flight Recorder (trace.FlightRecorder)
Flight recording — это способ отслеживать, что происходит в программе: какие функции вызываются, сколько памяти используется и другие важные события.
Но главное — эта запись ведётся не всё время, а только в «скользящем окне»: сохраняются только последние N секунд или последние N мегабайт данных.
👉 Это полезно, когда вы не знаете заранее, когда случится ошибка — flight recorder позволит «поймать» последние события перед сбоем.
8. Расширенные методы os.Root
Добавлены методы Chmod, Chown, Chtimes, Link, MkdirAll, RemoveAll, Rename, Symlink, ReadFile, WriteFile
9. reflect.TypeAssert
Упрощает преобразование reflect.Value в конкретный тип без промежуточного интерфейса.
10. hash.Cloner
Интерфейс клонирования состояния hash-функций (Clone()), поддерживается всеми реализациями STD (SHA-1, MD5 и др.)
📌 Полный обзор обновлений
@golang_google1384
12:51
27.06.2025
🔄 Cascading Context Cancellation в Go: от исходников к продакшену
В статье подробно разобрано, как Go управляет цепочками отмен
Context
— от базового кода до продакшен-паттернов.
🧠 Как устроена отмена Context
внутри Go
1. При создании cancelCtx
функция propagateCancel
делает так, чтобы отмена родителя передавалась детям.
2. Если родитель — тоже cancelCtx
, он хранит список потомков в children map
и пробрасывает cancel(...)
при отмене.
3. Если родитель имеет AfterFunc
, используется таймер; иначе создаётся горутина, которая ждёт <-parent.Done()
и вызывает cancel
.
Структура cancelCtx
:
type cancelCtx struct {
Context
mu sync.Mutex
done atomic.Value
children map[canceler]struct{}
err atomic.Value
cause error
}
{}
🧪 WithCancelCause — отмена с причиной
Позволяет указывать причину отмены вместо обычного context.Canceled
.
Пример:
ctx, cancel := context.WithCancelCause(base)
cancel(errors.New("my custom reason"))
fmt.Println(ctx.Err(), context.Cause(ctx))
{}
Причина отмены наследуется дочерними контекстами.
🧵 Безопасность в многопоточности
Методы Done()
и Err()
потокобезопасны благодаря мьютексам и атомикам.
CancelFunc
можно вызывать многократно — только первый вызов имеет эффект.
⏰ AfterFunc — код по отмене
Позволяет запускать функцию, когда контекст отменяется:
stop := context.AfterFunc(ctx, func() {
tx.Rollback()
})
...
if stop() { log.Println("cancel handler stopped") }
{}
Если контекст уже отменён — функция вызовется немедленно. stop()
может отменить выполнение функции.
🚫 WithoutCancel — фоновые задачи без отмены
Полезно, если горутина не должна завершаться при отмене родителя.
Важно: Done() == nil
→ чтение из канала блокирует навсегда.
⏲️ Таймеры: WithDeadline и WithTimeout
Функции создают контексты, которые отменяются автоматически по истечении времени.
Не забудьте делать defer cancel()
после создания!
✅ Практические советы
ctx, cancel := context.WithTimeout(parent, 100*time.Millisecond)
defer cancel()
{}
Всегда вызывайте cancel()
для освобождения ресурсов и предотвращения утечек.
🧰 Что в итоге
Этот материал охватывает:
• внутреннее устройство cancelCtx
• новые API: WithCancelCause
, AfterFunc
, WithoutCancel
• продакшен-паттерны безопасной отмены
📖 Полный текст статьи: https://dev.to/flew1x/cascading-context-cancellation-in-go-from-source-code-to-production-patterns-177j
@golang_books2367
15:55
29.06.2025
imageИзображение не доступно для предпросмотра
🔥 Обширная коллекция практичных сниппетов, примеров и рецептов на Go для создания эффективных, надёжных и масштабируемых приложений.
Идеально для разработчиков, которые хотят:
- писать чистый и читаемый Go-код
- быстро находить решения типовых задач
- изучать лучшие практики и готовые паттерны
📚 Всё — от HTTP-серверов и работы с JSON до многопоточности, базы данных и REST API.
🔗 https://go-cookbook.com
@Golang_google
#golang #go #guide
2151
10:22
30.06.2025
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://t.me/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🖥 Chatgpt для кода в тг: @Chatgpturbobot
📕Ит-книги: https://t.me/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
2303
12:04
05.07.2025
imageИзображение не доступно для предпросмотра
⚙️ Как правильно управлять конфигурацией в Go-приложении?
Алекс Эдвардс выпустил чёткий гайд по работе с настройками в веб-приложениях на Go:
• флаги командной строки
• переменные окружения
• конфиг-файлы (JSON, YAML)
• разделение по средам: dev, staging, prod
• и главное — как всё это объединить в чистую архитектуру
Без лишнего кода, с примерами и практикой. Подойдёт как для новичков, так и для тех, кто хочет структурировать свой проект правильно.
📖 Читать статью:
https://alexedwards.net/blog/how-to-manage-configuration-settings-in-go-web-applications
2597
13:02
05.07.2025
imageИзображение не доступно для предпросмотра
Присоединяйся к хакатону года в сфере travel-tech - О!Хакатону от Островка 💚
Островок приглашает Go и Python разработчиков, а также аналитиков и продакт-менеджеров попробовать свои силы в реальных бизнес-задачах и побороться за денежный приз.
Мероприятие пройдет полностью в онлайн-формате, участвовать можно из любой точки мира, самостоятельно или в команде.
Призовой фонд: 1 000 000 ₽
Регистрация открыта до 18 сентября.
Стартуем 26 сентября! 🚀
Подробности и регистрация
Реклама. ООО "БРОНИРОВАНИЕ ГОСТИНИЦ". ИНН 7703389880.
2408
10:35
07.07.2025
imageИзображение не доступно для предпросмотра
🚦 Рейтлимитинг в Go: Token Bucket и Leaky Bucket — просто и понятно
📌 Хочешь ограничить количество запросов в секунду к API или ресурсу? В статье [на dev.to](https://dev.to/jones_charles_ad50858dbc0/implementing-rate-limiters-in-go-token-bucket-and-leaky-bucket-made-simple-5162) показано, как реализовать два самых популярных алгоритма рейтлимитинга:
🪙 Token Bucket
- Каждому клиенту выделяется "ведро" с токенами.
- Запросы забирают по 1 токену.
- Токены добавляются с фиксированной скоростью.
- Если токенов нет — запрос блокируется или отклоняется.
Пример на Go:
bucket := make(chan struct{}, 5) // max 5 токенов
go func() {
for range time.Tick(200 * time.Millisecond) {
select {
case bucket <- struct{}{}:
default:
}
}
}()
{}
💧 Leaky Bucket
- Все запросы ставятся в очередь (как в воронке).
- Обработка идёт с фиксированной скоростью, капля за каплей.
- Если очередь переполнена — лишние запросы отбрасываются.
Пример на Go:
queue := make(chan struct{}, 5)
go func() {
for {
<-queue
time.Sleep(200 * time.Millisecond)
fmt.Println("Processed request")
}
}()
{}
📊 Выбор зависит от задачи:
- Token Bucket — гибкий контроль, хорошо работает с "всплесками" трафика.
- Leaky Bucket — строгая равномерность, предотвращает перегрузки.
🔗 Полная статья с пояснениями и кодом:
https://dev.to/jones_charles_ad50858dbc0/implementing-rate-limiters-in-go-token-bucket-and-leaky-bucket-made-simple-51622636
13:35
07.07.2025
📚 Новый инструмент для ИИ-агентов —
annas-mcp
Open-source проект annas-mcp
превращает Anna’s Archive в полноценный MCP-сервер. Это значит, что теперь Claude и другие ИИ-агенты могут искать и скачивать книги, статьи и документы напрямую, как часть своей цепочки действий.
🧠 Что умеет:
• Работает как MCP-сервер — можно интегрировать с Claude Desktop и другими агентами
• Поддерживает CLI-режим — ищи и скачивай прямо из терминала
• Использует официальный API Anna’s Archive (требуется ключ)
🔧 Пример использования:
export ANNAS_SECRET_KEY="ваш_ключ"
annas-mcp search "deep learning"
annas-mcp download <doc-id>{}
💡 Особенности:
— Полноценная поддержка Model Context Protocol
— Удобная интеграция в пайплайны агентов
— Возможность автоматизировать получение научных текстов
⚠️ Напоминаем: Anna’s Archive содержит контент, на который могут распространяться авторские права. Использование — на ваш риск.
📌 Github2768
13:04
11.07.2025
imageИзображение не доступно для предпросмотра
Go-сервис генерирует логи, но вы теряетесь в поиске и анализе?
Хотите научиться строить быстрый и надёжный поиск по данным микросервисов?
📅 17 июля в 20:00 (МСК) — открытый урок «Взаимодействие микросервиса на Go и Elasticsearch».
Разберём:
▪️ Архитектуру микросервисов на Go и ключевые нюансы
▪️ Базовые принципы работы с Elasticsearch
▪️ Интеграцию Go-сервиса с Elasticsearch для логирования и поиска
▪️ Настройку индексов, фильтрацию и агрегации
Представьте, что вы разворачиваете микросервис, подключаете его к Elasticsearch, логируете события и выдаёте мгновенный полнотекстовый поиск по данным. Ваш сервис становится прозрачным и управляемым.
🚀 Регистрируйтесь на урок «Взаимодействие микросервиса на Go и Elasticsearch»: https://otus.pw/RJse/?erid=2W5zFHKJBNG
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
1685
09:25
15.07.2025
imageИзображение не доступно для предпросмотра
🚀 Вводный гайд по Go от FreeCodeCamp – ключевые концепции для новичков
Если вы только входите в мир Go — это must-read:
1. Переменные и типы данных
- Статическая типизация:
int
, float
, bool
, string
, массивы, срезы, карты, struct
, указатели.
2. Управляющие конструкции
- if/else
, switch
, for
(единственный цикл в Go), включающий range
для обхода коллекций.
3. Функции и методы
- Объявление с параметрами и возвращаемыми значениями, включая множественный возврат и вариативные параметры.
- Методы с указателями и значениями в качестве ресиверов.
4. Указатели
- Получение адреса через &
, разыменование через *
, передача по ссылке
5. Structs & интерфейсы
- Группировка полей, композиция вместо наследования, интерфейсы для полиморфизма
6. Коллекции
- Массивы — неизменного размера.
- Срезы — динамические массивоподобные структуры.
- Карты — хранилища ключ–значение.
7. Стандартная библиотека и пакеты
- Базовые пакеты типа fmt
, strings
, удобные инструменты для форматирования и работы со строками.
8. Тестирование
- У FreeCodeCamp есть раздел про unit- и integration-тесты (см. оглавление).
9. Совместное развитие: gofmt и окружение
- gofmt
+ VSCode — автоформатирование и подсветка, готовое окружение.
10. Конкуренция (упомянута, но в основном в другом гиде)
- Горутины, каналы, мьютексы — сильные стороны Go, подробнее в «Go Handbook».
Итог:
FreeCodeCamp предлагает отличную обзорную дорожную карту для начинающих: от базовых типов до функций, структур и тестирования. Это отличный старт, за которым1626
10:34
15.07.2025
close
С этим каналом часто покупают
Отзывы канала
keyboard_arrow_down
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
5.0
2 отзыва за 6 мес.
Превосходно (100%) За последние 6 мес
s
**m_mytarget_bo@********.ru
на сервисе с сентября 2023
07.07.202512:42
5
Оперативное размещение
Показать еще
Лучшие в тематике
Новинки в тематике
Статистика канала
Рейтинг
39.7
Оценка отзывов
5.0
Выполнено заявок
84
Подписчики:
16.5K
Просмотры на пост:
lock_outline
ER:
8.3%
Публикаций в день:
0.0
CPV
lock_outlineВыбрано
0
каналов на сумму:0.00₽
Подписчики:
0
Просмотры:
lock_outline
Перейти в корзинуКупить за:0.00₽
Комментарий