Что выведет: i := 0; go func() { i = 1 }(); fmt.Println(i)?

Middle
154 просмотров
AFK Offer AI

Может вывести 0 или 1 — data race, undefined behavior. Нет синхронизации между горутиной и main. Race detector (-race) поймает. Без memory barrier запись i=1 может быть не видна main горутине. Фикс: sync.WaitGroup, channel, или atomic. Даже если "работает" — это UB, может сломаться на другой архитектуре или версии Go.

Следующий вопрос

Почему decimal а не float для денег?