Go & IT


Гео и язык канала: Россия, Русский
Категория: Технологии


Мы любим программирование, особенно если это Go ;)
Наш ламповый чатик: @go_stepik
Сотрудничество и реклама: @semyon_dev

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика
Фильтр публикаций


Команда DevCrowd запустила четвертое ежегодное исследование Go-разработчиков.*

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

Часть вопросов задается не первый раз, так что по зарплатам, грейдам и стеку будет видна динамика, а не разовый срез. А несколько формулировок намеренно совпадают с Go Developer Survey, так что получится сравнить русскоязычных гошников с мировой выборкой напрямую.

Опрос анонимный, 12–15 минут. В ноябре опубликуют отчет со всеми разрезами, а также списки источников, сообществ и мероприятий, собранные из ответов участников.

Пройти опрос: https://survey.devcrowd.ru/go-2026

*DevCrowd — независимые исследования IT-профессий: больше 15 000 участников, публичные отчёты по мобильной разработке, SRE, дата-специалистам, продактам и другим направлениям. Не является рекламой.


Go SDK для YDB: уменьшаем количество запросов к СУБД для интерактивных транзакций:
https://habr.com/ru/companies/ydb/articles/1070138/




Вышел go 1.26 - https://go.dev/doc/go1.26

🔥 Теперь в new() можно передавать значение, а не только тип

Раньше приходилось:
type Person struct {
Age *int `json:"age,omitempty"`
}
age := 42
p := Person{
Age: &age,
}
Теперь можно не создавать временную переменную или использовать хелперы:
type Person struct {
Age *int `json:"age,omitempty"`
}
p := Person{
Age: new(42),
}




JetBrains выпустили 👩‍💻 GoLand 2025.3 с оптимизацией производительности, улучшенной работой с Kubernetes и Terraform, а также с выявлением утечек ресурсов.

Теперь GoLand помогает находить утечки ресурсов — например, файлы или сетевые подключения, которые не были должным образом закрыты после использования. Новая локальная инспекция анализирует код в реальном времени и предупреждает о ресурсах, которые случайно остались открыты.

Эти предупреждения появляются прямо в редакторе и помогают правильно очищать критически важные ресурсы.








Что происходит с Go-разработкой в 2025 году?

Как меняется стек, какие практики и инструменты становятся стандартом, как работают команды и какие задачи сейчас на передовой?

DevCrowd запускает ежегодное исследование русскоязычных Go-разработчиков.

Участвуйте и помогите собрать срез профессии — живой, честный, актуальный.

Зачем участвовать?

– сравните себя с другими: задачи, подходы, зрелость процессов
– узнаете, какие технологии и практики в ходу у коллег
– получите ориентиры для развития и найма
– сделаете профессию Go-разработчика прозрачнее для рынка

📝 Заполнение займёт 10–12 минут

👉 Пройти опрос - https://survey.alchemer.eu/s3/90907937/Go-2025

📊 Результаты — в начале ноября на devcrowd.ru

👀 Посмотреть результаты прошлого года — https://devcrowd.ru/go-2024




Продолжаем разбираться с go1.25 который должен выйти уже в этом месяце. В предыдущих версиях encoding/json struct-теги были довольно ограниченными, но в новом пакете encoding/json/v2 появилась мощная опция format, которая позволяет задавать специальное форматирование для разных типов: дат, чисел, байтовых массивов и тд. Пример:
package main

import (
"encoding/json/v2" // импортируем новый пакет
"math"
"time"
)

type Data struct {
// time.Duration в формате "1h0m0s" (строка)
Duration time.Duration `json:"duration,format:units"`

// time.Duration в секундах (числом)
DurationSec time.Duration `json:"duration_sec,format:sec"`

// time.Time в формате "YYYY-MM-DD"
Date time.Time `json:"date,format:'2006-01-02'"`

// []byte как base64url
B64 []byte `json:"b64,format:base64url"`

// float64 с поддержкой NaN и ±Inf в виде строки
Val float64 `json:"val,format:nonfinite"`

// nil slice выводится как null (а не [])
List []int `json:"list,format:emitnull"`
}

func main() {
data := Data{
Duration: time.Hour,
DurationSec: time.Hour,
Date: time.Now(),
B64: []byte("base64url"),
Val: math.NaN(),
}

dataJson, err := json.Marshal(data)
// ...
}
Получившийся json:
{
"duration": "1h0m0s",
"duration_sec": 3600,
"date": "2025-08-01",
"b64": "YmFzZTY0dXJs",
"val": "NaN",
"list": null
}
Раньше приходилось вручную реализовывать MarshalJSON или писать вспомогательные поля, теперь же стало чуточку удобнее 🙌


В августе планируется релиз go1.25, начинаем разбираться что нового в этом релизе 🖼️

📦 Спустя 13 лет разработчики решили добавить "Add+Done" wrapper. Теперь не нужно вручную писать Add(1) перед запуском горутины и defer Done() внутри неё. Всё это делает Go() автоматически. Сравним:
Go 1.24:
var wg sync.WaitGroup

wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("go 1")
}()

wg.Add(1)
go func() {
defer wg.Done()
fmt.Println("go 2")
}()

wg.Wait()
fmt.Println("done")
Go 1.25:
var wg sync.WaitGroup

wg.Go(func() {
fmt.Println("go 1")
})

wg.Go(func() {
fmt.Println("go 2")
})

wg.Wait()
fmt.Println("done")
Простое изменение, которое делает код чище и надёжнее.

1.2k 0 16 10 31

Топ 15 самых распространённых ошибок при разработке на Golang https://habr.com/ru/articles/904658/






🖼️ Stepik обновил Golang до 1.24.1, можно применять новые фичи для решения задач




Что выведет программа выше на скриншоте?
Опрос
  •   [1 2 3 100 200] [-1 2 3 100 200]
  •   [-1 2 3 100] [-1 2 3 100 200]
  •   [1 2 3 100] [-1 2 3 100 200]
  •   [1 2 3] [-1 2 3 100 200]
10 голосов


Продолжаем думать над задачками из реальных собеседований:

Показано 20 последних публикаций.