Data race - это ситуация, когда две или более горутины обращаются к одной и той же переменной одновременно, и хотя бы одно обращение - запись. Поведение программы при этом не определено.
var n int
go func() { n++ }()
go func() { n++ }()
// n может быть 0, 1 или 2 - гонка
sync.Mutex - блокировка на время доступаsync/atomic - атомарные операции для счётчиковДетектор: go test -race или go run -race.