38.5K subscribers
1.6K photos
43 videos
5 files
1.74K links
加入频道
💥 Необычное поведение структур

В недавнем блоге Мэтта Холла поднята важная деталь, о которой некоторые забывают.

Автор показывает, что при встраивании (`embedding`) структур Go может выбрать неочевидное поле, даже если кажется, что это вызовет ошибку.

Пример:


type FooService struct { URL string }
type BarConnectionOptions struct { URL string }
type BarService struct { BarConnectionOptions }
type Options struct {
FooService
BarService
}

opts := Options{
FooService: FooService{URL: "abc.com"},
BarService: BarService{
BarConnectionOptions: BarConnectionOptions{URL: "xyz.com"},
},
}
fmt.Println(opts.URL)


Вы думаете, тут компиляция не пройдёт из-за неоднозначности?

Но, она завершится успешна — и начпечатает abc.com.

Go выбирает наименее вложенное поле URL, в данном случае FooService.URL.

Урок: будьте осторожны с struct embedding! Переиспользование полей может скрывать баги, особенно когда поля именованы одинаково, а уровни вложенности различны.

📌 Пост

@golang_google

#golang #go
👍358🔥8🤯3
👣 Screego — быстрый и удобный экран-шеринг с открытым исходным кодом

Что это:
Screego — сервер для шаринга экрана с низкой задержкой и высоким качеством, написанный на Go. Работает через WebRTC и включает встроенный TURN-сервер, чтобы пробиваться даже через сложные сети и NAT.

Возможности:
- Совместный доступ к экрану для нескольких пользователей
- Высокое разрешение + минимальная задержка
- Простая установка: Docker или единый бинарник
- Защищённая передача данных через WebRTC
- Поддержка IP-фильтров и настроек безопасности

🚀 Актуально:
Последний релиз — v1.12.0 (май 2025). Добавлены новые настройки безопасности для TURN-сервера.

🔗 Репозиторий: github.com/screego/server


@golang_google

#golang #go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3310🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
📡 marchat — лёгкий терминальный чат на Go

marchat — это самохостящийся чат прямо в терминале.
Он прост, кроссплатформенный и поддерживает всё, что нужно команде для быстрой и безопасной переписки.

🔑 Фишки:
- Устанавливается за пару минут (бинарь или Docker)
- E2E-шифрование (X25519 + ChaCha20-Poly1305)
- Передача файлов до 1 МБ
- Темы оформления и TUI-интерфейс (Bubble Tea)
- Плагины: :store, :plugin install и т.д.
- Поддерживает админ-команды: :ban, :kick, :cleardb

📌 Github

@golang_google

#golang #go #opensource
👍127🔥2
🚀 ВКонтакте усиляет Go-экспертизу команды

ВКонтакте переходит на сервисную архитектуру и переобучает часть команд на Go — уже 140 разработчиков прошли внутреннюю программу обучения:

Программа адаптирована под реальные процессы ВКонтакте: архитектура сервисов, работа с высоконагруженной инфраструктурой, асинхронность, интеграции

Фокус не на обучении с нуля, а быстром входе в сложные и практические задачи: например, в финальном проекте участники разрабатывали каркас микросервиса в условиях, максимально близких к реальным.

💡 Почему это интересно

Переход на Go — часть технологической стратегии ВКонтакте: микросервисы дают командам автономность и ускоряют внедрение фич.

Разработчики не теряют накопленные знания о продукте, но получают новую экспертизу и майндсет.

Пример, как крупная компания может инвестировать в апгрейд команды, а не только в найм.

#golang #vk #microservices @golang_google
🤬31😁11👍9🔥64
🚀 kro (Kube Resource Orchestrator) — новый открытый проект для Kubernetes!

kro позволяет объединять несколько ресурсов в один логический объект и управлять их жизненным циклом автоматически. При применении конфигурации kro создаёт необходимые CRD и сам следит за порядком развёртывания.

Ключевые возможности:
- 🛠 Kubernetes-native – использует CRD, контроллеры и CEL (Common Expression Language).
- 🔗 ResourceGraphDefinition (RGD) – позволяет объявлять группы ресурсов с зависимостями в едином объекте.
- Упрощение платформенной инженерии – скрывает сложность, создавая стандартизированные шаблоны деплоя для команд.

📌 Статус проекта:
- Всё ещё в активной разработке, не рекомендуется для production.
- GitHub: более 2.3k звёзд, десятки открытых задач и PR, активное развитие.

💬 От сообщества:
> kro упрощает управление сложными Kubernetes-ресурсами, превращая их в переиспользуемые блоки и автоматически определяя порядок развёртывания.

👉 Репозиторий: https://github.com/kro-run/kro

@golang_google

#golang #Kubernetes
5👍4🔥3
👣 Go теперь по-умолчанию "знает", сколько CPU ему действительно доступно внутри контейнера

В релизе 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
👍59🔥1715👏2
🌦️ Минималистичный CLI для прогноза погоды на GO

Stormy — это настраиваемый инструмент командной строки для получения прогноза погоды, вдохновленный Neofetch. Написан на Go, он поддерживает несколько провайдеров данных и предлагает визуально привлекательное представление текущих погодных условий.

🚀Основные моменты:
- Поддержка OpenMeteo и OpenWeatherMap
- ASCII-арт для отображения погоды
- Настраиваемые единицы измерения
- Локальный конфигурационный файл
- Цветная поддержка для терминалов

📌 GitHub: https://github.com/ashish0kumar/stormy

@golang_google


#go #golang
18👍15🔥5😁2