Go for Devs – Telegram
Go for Devs
1.07K subscribers
49 photos
17 videos
64 links
По сотрудничеству пишите в личные сообщения канала.
Download Telegram
Channel created
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Go 1.24 – большое обновление для инструментов: go tools 🛠

В грядущем релизе Go 1.24 (ожидается уже в феврале 2025) появится новая команда go tool, которая значительно упростит работу с проектными инструментами. Это обновление убирает необходимость в обходных решениях вроде tools.go, снижает «раздувание» зависимостей и ускоряет работу за счёт кеширования.

То есть:
🟣 Больше никаких костылей с tools.go
🟣 Более быстрая работа благодаря кешу
🟣 Чище и эффективнее управление зависимостями

Как это работает? Всё очень просто!

Добавить инструмент:


go get -tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@v2.4.1


Запустить:


go tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen --config=config.yaml openapi.yaml


Посмотреть список доступных инструментов:


go tool


Многие уже называют это одним из самых полезных обновлений для инструментов Go за последние годы: настройка проектов станет заметно проще и удобнее.

📚 Официальную документацию можно найти в заметках к релизу Go 1.24
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥4
🎬 What’s new in Go 1.24 (Google for Developers)

Нашли, чем заняться вечером — погрузитесь в нововведения Go 1.24: от пост‑квантовой криптографии до полной поддержки обобщённых типовых псевдонимов, от усовершенствований кеширования инструментов до новых возможностей стандартной библиотеки.

😉 СМОТРЕТЬ НА YOUTUBE
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥4
🙈 Будьте осторожны с Struct Embedding в Go

В Go есть механизм встраивания структур (struct embedding), который позволяет составлять типы. Примерно это выглядит так:


type Position struct {
X int
Y int
}

type Colour struct {
R byte
G byte
B byte
}

type Rectangle struct {
Position
Colour

Width int
Height int
}

r := Rectangle{/* ... */}

// This works:
fmt.Printf("%d,%d\n", r.Position.X, r.Position.Y)

// but so does this:
fmt.Printf("%d,%d\n", r.X, r.Y)


А как вы думаете, что делает этот код?


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)


Я бы ожидал, что компиляция упадет из-за неоднозначности поля URL. На самом деле программа выводит abc.com, по всей видимости, выбирая наименее вложенную версию этого поля. Такое у нас случилось на работе, к счастью, это поймали тесты. Будьте внимательны при встраивании структур!
👍64🔥4
🛠 Generic интерфейсы в Go: просто, но сложно

Команда Go for Devs подготовила перевод статьи Акселя Вагнера о том, как generic интерфейсы в Go открывают новые возможности и новые сложности.

В статье разбираются паттерны, ограничения и компромиссы: от self reference интерфейсов до дилеммы с ресивер-указателями.

📚 Подробности на Хабр: https://habr.com/ru/articles/942634/
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥4
🔥 Что нового в GoLand 2025.2?

В этом релизе — умное выявление ошибок с помощью анализа потоков данных, неблокирующий экран приветствия, улучшенный поиск HTTP-эндпоинтов и ускоренный AI-агент Junie.

А ещё — апгрейд JetBrains AI Assistant и свежие функции, унаследованные от IntelliJ IDEA, WebStorm и DataGrip.

📚 Подробности на Хабр: https://habr.com/ru/articles/942868/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥2
Как проверить время и асинхронный код в Go?

Команда Go for Devs подготовила перевод статьи о пакете synctest, который с Go 1.25 стал частью стандартной библиотеки.

Он позволяет писать быстрые и надёжные тесты для конкурентного кода, не усложняя сам код. Теперь асинхронные операции можно проверять без долгих ожиданий и флаки-тестов.

📚 Подробности на Хабр: https://habr.com/ru/articles/943412/
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥2
🚀 Вышли минорные релизы Go — 1.25.1 и 1.24.7!

В обновлениях исправлена одна уязвимость в соответствии с политикой безопасности Go:

🟣 net/http: CrossOriginProtection bypass patterns
При использовании CrossOriginProtection.AddInsecureBypassPattern запросы, которые должны были редиректиться (например, без завершающего слэша), также попадали в список исключений. Это могло привести к неожиданному поведению. Уязвимость зарегистрирована как CVE-2025-47910 (Go issue #75054).

⬇️ Скачать бинарные и исходные сборки можно на тут.

#release #minor
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3🔥2
🧠 Оптимизация памяти в Go: 20 приёмов для эффективных приложений

Команда Go for Devs подготовила перевод статьи о том, как оптимизировать использование памяти в Go-приложениях.

Автор делится двадцатью приёмами — от выбора ресивера метода и правильной инициализации slice до кастомного управления памятью и профилирования с pprof.

TL;DR: мелкие улучшения складываются в заметный прирост производительности и стабильности.

📚 Подробности на Хабр: https://habr.com/ru/articles/943664/
4👍2🔥2
🌍 Как превратить SQL в полноценный API прямо в Go?

В новой статье делимся информацией о том, как можно безопасно принимать WHERE-условия в виде SQL-подзапросов, валидировать их и использовать для запросов к базе.

Просто, элегантно и почти без лишнего кода.

📚 Подробности на Хабр: https://habr.com/ru/articles/943744/
👍3🔥31😁1