@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
«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), время продвигается вперед автоматически, чтобы "разблокировать" эти операции.
✅ Пример теста:
Здесь мы проверяем, что Read действительно отдает ошибку "timeout", без реального ожидания 60 секунд — synctest просто симулирует, что они прошли.
🕰 Как это работает?
Внутри synctest.Test:
- Время начинается с 2000-01-01T00:00:00Z;
- Когда все горутины заблокированы, время продвигается до следующего события (time.After, time.Sleep и т.д.);
- Это позволяет сразу активировать нужные ветки кода, которые зависят от времени, без настоящих задержек.
⚠️ Ограничения
Внутри synctest.Test нельзя использовать:
Пример неверного использования:
testing/synctest — это инструмент для тестирования кода, зависящего от времени, без реального ожидания, что делает тесты мгновенными и стабильными. Идеально подходит для timeout, retry, delays, ticker, и других случаев, когда вы хотите протестировать "прошло ли время", но не хотите реально ждать.
2. JSON v2 — серьезный апдейт
json/v2 вводит новые функции, включая MarshalToFunc, UnmarshalFromFunc и более гибкую систему маршаллинга с пользовательскими функциями.
Пример:
👉 Подробно можно почитать здесь
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 — теперь можно писать:
Вместо 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_google
Основные моменты:
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_google
Записывайте рецепт успешного тимлида:
В качестве основы берём страсть к разработке. Добавляем щепотку управления, пару ложек стратегического видения, посыпаем творческим подходом к задачам со звездочкой. 🥖 Выпекаем в команде Lamoda Tech! Получается лидер, за которым хочется идти.
🤝Ребята сейчас расширяют команды и ищут тех, кто готов ими управлять. Предстоит развивать архитектуру, оптимизировать процессы, разрабатывать и влиять на стратегию направлений и продукта Lamoda.
Открыты вакансии:
✅ Тимлид группы разработки
✅ Тимлид маркетинговой аналитики
#реклама
О рекламодателе
В качестве основы берём страсть к разработке. Добавляем щепотку управления, пару ложек стратегического видения, посыпаем творческим подходом к задачам со звездочкой. 🥖 Выпекаем в команде Lamoda Tech! Получается лидер, за которым хочется идти.
🤝Ребята сейчас расширяют команды и ищут тех, кто готов ими управлять. Предстоит развивать архитектуру, оптимизировать процессы, разрабатывать и влиять на стратегию направлений и продукта Lamoda.
Открыты вакансии:
✅ Тимлид группы разработки
✅ Тимлид маркетинговой аналитики
#реклама
О рекламодателе
🔗 Schema — удобный инструмент для преобразования данных между HTML-формами и Go-структурами. Этот пакет из экосистемы Gorilla упрощает работу с веб-формами, автоматически связывая поля структуры с данными POST-запросов и наоборот.
Библиотека поддерживает базовые типы данных, позволяет задавать кастомные имена полей через тег
🤖 GitHub
@golang_google
Библиотека поддерживает базовые типы данных, позволяет задавать кастомные имена полей через тег
schema
и обрабатывать значения по умолчанию. Например, можно декодировать форму в структуру Person
с полями Name
и Phone
всего парой строк кода. 🤖 GitHub
@golang_google
Тест для Golang-разработчиков, проверьте свои знания, готовы ли вы к обучению на курсе.
💻 Ответьте на 20 вопросов за 30 минут и проверьте, готовы ли вы к обучению на онлайн-курсе «Golang Developer. Professional» от OTUS. Сейчас Go становится все востребованнее, благодаря своей производительности, масштабируемости и экосистеме.
После 5 месяцев обучения вы сможете:
— Писать production-ready код, многопоточные и конкурентные программы.
— Понимать синтаксис и внутреннее устройство языка Go.
— Разворачивать микросервисы с помощью Docker.
— Проектировать и реализовывать микросервисную архитектуру на Go.
Также вас ждет прокачка навыков на реальных коммерческих кейсах и под руководством экспертов в этой области. Возможна рассрочка.
👉 ПРОЙТИ ТЕСТ: https://tglink.io/f8307612f418?erid=2W5zFGzRBJG
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
💻 Ответьте на 20 вопросов за 30 минут и проверьте, готовы ли вы к обучению на онлайн-курсе «Golang Developer. Professional» от OTUS. Сейчас Go становится все востребованнее, благодаря своей производительности, масштабируемости и экосистеме.
После 5 месяцев обучения вы сможете:
— Писать production-ready код, многопоточные и конкурентные программы.
— Понимать синтаксис и внутреннее устройство языка Go.
— Разворачивать микросервисы с помощью Docker.
— Проектировать и реализовывать микросервисную архитектуру на Go.
Также вас ждет прокачка навыков на реальных коммерческих кейсах и под руководством экспертов в этой области. Возможна рассрочка.
👉 ПРОЙТИ ТЕСТ: https://tglink.io/f8307612f418?erid=2W5zFGzRBJG
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
📔 Gorsk — готовый стартовый набор для создания RESTful-сервисов на Go с акцентом на чистую архитектуру. Этот проект избавляет от рутинной настройки, предлагая сразу работающую основу с JWT-аутентификацией, RBAC, валидацией данных и Swagger-документацией.
Инструмент имеет модульную структуру, позволяющую легко заменять компоненты вроде Echo на другой фреймворк или ORM. В комплекте: CRUD для пользователей, тесты с моками и контейнеризованные запросы к БД.
🤖 GitHub
@golang_google
Инструмент имеет модульную структуру, позволяющую легко заменять компоненты вроде Echo на другой фреймворк или ORM. В комплекте: CRUD для пользователей, тесты с моками и контейнеризованные запросы к БД.
🤖 GitHub
@golang_google
Gozo — лёгкая и удобная библиотека, которая добавляет в Go инструментальный набор для повседневных задач: обработка срезов, карт, потоки и функциональные примитивы.
⚙️ Что внутри:
- `slices` — функции для работы с массивами:
Map
, Filter
, Delete
, Insert
, Pop
, PushFront
, Fold
, Some
, Equals
и даже ToMap
— всё с поддержкой дженериков - `maps` — утилиты:
Map
, Filter
, Reduce
, Equals
, FilterMap
, Fold
, Slice
- `fp` (функциональные примитивы) — монады
Option[T]
, Result[T]
, с конструктор-функциями: Some
, None
, Ok
, Err
, OptionFromPtr
, OptionFromTuple
- `streams` — конвейеры обработки данных:
Batch
, Filter
, Flatten
, CSV
, JSON
, Pipe
, Collect
и другие - `tuples` — простые структуры для пар значений (Tuple2)
🛠 Для чего это нужно:
- Ускоряет и делает код чище при работе с коллекциями
- Обладает безопасной обработкой ошибок и отсутствия значений через FP‑модели
- Дженерики обеспечивают типобезопанность и избавляют от лишнего шаблонного кода
- MIT‑лицензия
📌 Github
#go #golang #monads #functionalprogramming #toolkit #maps #utils #generics #slices
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Большая коллекция полезных сниппетов, примеров и рецептов на Go для создания эффективных, надёжных и масштабируемых приложений.
Идеально для разработчиков, которые хотят:
- писать чистый и читаемый Go-код
- быстро находить решения типовых задач
- изучать лучшие практики и готовые паттерны
📚 Всё — от HTTP-серверов и работы с JSON до многопоточности, базы данных и REST API.
🔗 https://go-cookbook.com
@Golang_google
#golang #go #guide
Идеально для разработчиков, которые хотят:
- писать чистый и читаемый Go-код
- быстро находить решения типовых задач
- изучать лучшие практики и готовые паттерны
📚 Всё — от HTTP-серверов и работы с JSON до многопоточности, базы данных и REST API.
🔗 https://go-cookbook.com
@Golang_google
#golang #go #guide
This media is not supported in your browser
VIEW IN TELEGRAM
🎁 Хорошая новость: Microsoft открыла исходный код GitHub Copilot Chat для VS Code!
Доступны и режим агента, и редактирование, и промпты — всё можно изучить, кастомизировать и использовать бесплатно под лицензией MIT.
GitHub
@Golang_google
Доступны и режим агента, и редактирование, и промпты — всё можно изучить, кастомизировать и использовать бесплатно под лицензией MIT.
GitHub
@Golang_google
This media is not supported in your browser
VIEW IN TELEGRAM
Go-пикник? Да, вам не послышалось!
17 июля Go-разработчики собираются на Avito Grill & Go, чтобы понетворкать, сыграть в кастомные игры и, конечно, вкусно поесть.
В чилловой обстановке участники смогут:
➡️ поучаствовать в мемном Fast food System Design;
➡️ почелленджить над кодом;
➡️ обсудить карьерные треки;
➡️ а также перенять экспертизу напрямую от разработчиков Авито.
Участие бесплатное, но регистрация обязательна →
17 июля Go-разработчики собираются на Avito Grill & Go, чтобы понетворкать, сыграть в кастомные игры и, конечно, вкусно поесть.
В чилловой обстановке участники смогут:
Участие бесплатное, но регистрация обязательна →
Please open Telegram to view this post
VIEW IN TELEGRAM
🌺 LotusDB — гибридный key-value движок на Go. Этот проект объединяет лучшее из двух миров — скорость чтения B+-деревьев и эффективность записи LSM-деревьев. Инструмент позиционируется как альтернатива Badger и BBolt, но с меньшими накладными расходами на чтение и дисковое пространство.
Проект поражает простотой интеграции: достаточно импортировать пакет и указать путь для хранения данных. LotusDB активно развивается, а в Slack-чате уже собирается сообщество энтузиастов.
🤖 GitHub
Проект поражает простотой интеграции: достаточно импортировать пакет и указать путь для хранения данных. LotusDB активно развивается, а в Slack-чате уже собирается сообщество энтузиастов.
🤖 GitHub
- Вся логика помещается в менее чем 1000 строк Go-кода
- Хранение данных в читаемых CSV-файлах с версионированием записей
- REST API для CRUD-операций, сортировки и SSE-стриминга
- Аутентификация через сессионные куки и Basic Auth
- Простая RBAC и проверка прав владения
- Поддержка хуков для кастомной валидации и обработки данных
- Встроенная отдача статических файлов и рендеринг Go-шаблонов
Подойдёт для MVP и небольших проектов: просто укажите папку
data
и запускайте HTTP-сервер.📌 Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
📊 Generic Data Structures — коллекции для Go с дженериками. Этот проект собрал под одной крышей все основные структуры данных — от классических B-деревьев и AVL-деревьев до специализированных интервальных деревьев и персистентных массивов.
Библиотека использует дженерики из Go 1.18+, что делает её типобезопасной. В отличие от многих аналогов, здесь есть редкие структуры вроде бимэпа или тернарного поискового дерева.
🤖 GitHub
@golang_google
Библиотека использует дженерики из Go 1.18+, что делает её типобезопасной. В отличие от многих аналогов, здесь есть редкие структуры вроде бимэпа или тернарного поискового дерева.
🤖 GitHub
@golang_google
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Мл собес t.iss.one/machinelearning_interview
C++ t.iss.one/cpluspluc
Docker: t.iss.one/DevopsDocker
Хакинг: t.iss.one/linuxkalii
МЛ: t.iss.one/machinelearning_ru
Devops: t.iss.one/DevOPSitsec
Data Science: t.iss.one/data_analysis_ml
Javascript: t.iss.one/javascriptv
C#: t.iss.one/csharp_ci
Java: t.iss.one/java_library
Базы данных: t.iss.one/sqlhub
Python собеседования: t.iss.one/python_job_interview
Мобильная разработка: t.iss.one/mobdevelop
Golang: t.iss.one/golang_interview
React: t.iss.one/react_tg
Rust: t.iss.one/rust_code
ИИ: t.iss.one/vistehno
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Frontend: t.iss.one/front
Big Data: t.iss.one/bigdatai
МАТЕМАТИКА: t.iss.one/data_math
Kubernets: t.iss.one/kubernetc
Разработка игр: https://t.iss.one/gamedev
Физика: t.iss.one/fizmat
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.iss.one/memes_prog
🇬🇧Английский: t.iss.one/english_forprogrammers
🧠ИИ: t.iss.one/vistehno
📕Ит-книги: https://t.iss.one/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Мл собес t.iss.one/machinelearning_interview
C++ t.iss.one/cpluspluc
Docker: t.iss.one/DevopsDocker
Хакинг: t.iss.one/linuxkalii
МЛ: t.iss.one/machinelearning_ru
Devops: t.iss.one/DevOPSitsec
Data Science: t.iss.one/data_analysis_ml
Javascript: t.iss.one/javascriptv
C#: t.iss.one/csharp_ci
Java: t.iss.one/java_library
Базы данных: t.iss.one/sqlhub
Python собеседования: t.iss.one/python_job_interview
Мобильная разработка: t.iss.one/mobdevelop
Golang: t.iss.one/golang_interview
React: t.iss.one/react_tg
Rust: t.iss.one/rust_code
ИИ: t.iss.one/vistehno
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Frontend: t.iss.one/front
Big Data: t.iss.one/bigdatai
МАТЕМАТИКА: t.iss.one/data_math
Kubernets: t.iss.one/kubernetc
Разработка игр: https://t.iss.one/gamedev
Физика: t.iss.one/fizmat
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.iss.one/memes_prog
🇬🇧Английский: t.iss.one/english_forprogrammers
🧠ИИ: t.iss.one/vistehno
📕Ит-книги: https://t.iss.one/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
🔥 Beelzebub — продвинутый low-code honeypot с LLM 🔥
Beelzebub — легковесный honeypot-фреймворк с ядром LLM, текстом симулирующий «живую» систему. Позволяет безопасно ловить атакующих, создавая иллюзию реального сервера.
Основные возможности:
- Модульная настройка через YAML-конфиги для добавления сервисов и портов
- Поддержка SSH, HTTP, TCP и MCP-протоколов на основе ИИ
- Сбор метрик Prometheus и интеграция с ELK
- Запуск через Docker, Helm или Kubernetes
Быстрый старт:
📌 Github
Beelzebub — легковесный honeypot-фреймворк с ядром LLM, текстом симулирующий «живую» систему. Позволяет безопасно ловить атакующих, создавая иллюзию реального сервера.
Основные возможности:
- Модульная настройка через YAML-конфиги для добавления сервисов и портов
- Поддержка SSH, HTTP, TCP и MCP-протоколов на основе ИИ
- Сбор метрик Prometheus и интеграция с ELK
- Запуск через Docker, Helm или Kubernetes
Быстрый старт:
git clone https://github.com/mariocandela/beelzebub.git
cd beelzebub
docker-compose up -d
📌 Github