Forwarded from Golang
В релизе Go 1.25 представлена важная улучшенная логика работы
GOMAXPROCS
в контейнеризованных средах — например, в Kubernetes.Как это работает:
- Раньше по умолчанию
GOMAXPROCS
устанавливался равным числу логических CPU на хосте. - Теперь на Linux runtime автоматически учитывает CPU limits, заданные для контейнера. Если лимит меньше числа логических ядер —
GOMAXPROCS
устаналивается на уровне лимита. - Более того, runtime периодически обновляет
GOMAXPROCS
, если меняются доступные CPU или ограничения, без необходимости внешнего вмешательства. Почему это важно:
Ранее разработчикам приходилось использовать внешние решения вроде
uber-go/automaxprocs
, чтобы вручную синхронизировать GOMAXPROCS
с лимитами контейнера. Теперь runtime делает это автоматически и точнее: - Внутри контейнера Go не будет пытаться использовать все ядра хоста
- Уменьшаются лишние горутины, контекстные переключения и нагрузка на GC
Кратко: начиная с Go 1.25,
GOMAXPROCS
адаптируется под реальные CPU-ресурсы контейнера — без дополнительных усилий.📌 Подробности
@golang_google
#golang #Kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤7
⚡ Or-channel паттерн в Go — мощный приём для работы с конкурентностью.
Он позволяет объединять несколько done-каналов в один общий.
Как только закрывается любой из входных каналов — автоматически закрывается и новый канал.
Такой подход даёт единый сигнал для завершения или отмены операции.
#golang
Он позволяет объединять несколько done-каналов в один общий.
Как только закрывается любой из входных каналов — автоматически закрывается и новый канал.
Такой подход даёт единый сигнал для завершения или отмены операции.
#golang
🔥21🥴14👍7❤5
📌 В Go есть два разных способа собирать пути, и это важно понимать:
👉 Нужно указать путь к файлу на диске?
Используй
Он сам подставит правильные разделители:
-
-
👉 Нужно собрать путь со слешами, например для URL?
Используй
Он всегда будет использовать
⚠️ На Linux оба варианта могут выглядеть одинаково, но на Windows результат будет другим.
#golang #go #programming #backend
👉 Нужно указать путь к файлу на диске?
Используй
filepath.Join
из пакета path/filepath
. Он сам подставит правильные разделители:
-
/
на Linux и macOS -
\
на Windows 👉 Нужно собрать путь со слешами, например для URL?
Используй
path.Join
из пакета path
. Он всегда будет использовать
/
и работать одинаково на всех ОС. ⚠️ На Linux оба варианта могут выглядеть одинаково, но на Windows результат будет другим.
#golang #go #programming #backend
👍21❤2
🔧 go-update-lens — библиотека на Go для обновления «линз» (lens) и реактивного патчинга данных в структурах
📌 Что умеет:
- Позволяет динамически изменять вложенные структуры без полной перезаписи
- Поддерживает создание “линз” - функциональный подход к фокусировке на части данных
- Работает “in-place”, минимизируя копирование и сохраняя производительность
🌟 Почему это полезно:
- Упрощает работу с вложенными структурами, когда нужно изменить лишь часть
- Особенно удобно в приложениях с состоянием и реактивными моделями
- Помогает избежать boilerplate-кода для обновления вложенных полей
🔗 Репозиторий: https://github.com/PatchLens/go-update-lens
#golang #architecture #library #data #update_ops
📌 Что умеет:
- Позволяет динамически изменять вложенные структуры без полной перезаписи
- Поддерживает создание “линз” - функциональный подход к фокусировке на части данных
- Работает “in-place”, минимизируя копирование и сохраняя производительность
🌟 Почему это полезно:
- Упрощает работу с вложенными структурами, когда нужно изменить лишь часть
- Особенно удобно в приложениях с состоянием и реактивными моделями
- Помогает избежать boilerplate-кода для обновления вложенных полей
🔗 Репозиторий: https://github.com/PatchLens/go-update-lens
#golang #architecture #library #data #update_ops
❤1