When two or more goroutines have unsynchronized access to a shared resource and attempt to read and write to that resource at the same time, you have what’s called a race condition.
example program that contains a race condition
var (counter intwg sync.WaitGroup)func main() {wg.Add(2)go incCounter(1)go incCounter(2)wg.Wait()fmt.Println("Final Counter:", counter)}func incCounter(id int) {defer wg.Done()for count := 0; count < 2; count++ {value := counterruntime.Gosched()value++counter = value}}
Build the code using the race detector flaggo build -race
