Что выведет код Junior sync и атомики обновлено

Что выведет Go: atomic.Int64 из 100 горутин

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23.

package main

import (
    "fmt"
    "sync"
    "sync/atomic"
)

func main() {
    var n atomic.Int64
    var wg sync.WaitGroup
    for range 100 {
        wg.Add(1)
        go func() {
            defer wg.Done()
            for range 10 {
                n.Add(1)
            }
        }()
    }
    wg.Wait()
    fmt.Println(n.Load())
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 1000. Каждая из 100 горутин делает 10 атомарных инкрементов, потерь нет: 1000.

Что выведет

1000

Разбор

Каждая из 100 горутин делает 10 атомарных инкрементов, потерь нет: 1000. С обычным n++ результат был бы непредсказуемым. range 100 по целому работает с Go 1.22.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.