// PREDICT: what are the possible outputs? What's the race here even if it // "usually works"? Run with -race a few times. package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup count := 0 for i := 0; i < 3; i++ { go func() { wg.Add(1) // <-- what's wrong with Add here? defer wg.Done() count++ }() } wg.Wait() fmt.Println("count:", count) }