Golang / GoLang Basics Interview Questions
What are goroutines and how do you use sync.WaitGroup to wait for them?
A goroutine is a lightweight, concurrently executing function managed by the Go runtime. The cost to create one is ~2 KB of stack and ~300 ns — roughly 1000× cheaper than an OS thread. The runtime multiplexes goroutines onto OS threads with its own scheduler.
// Launch a goroutine with the 'go' keyword go fmt.Println("running concurrently") // Anonymous goroutine go func(msg string) { fmt.Println(msg) }("hello from goroutine") // PROBLEM: main() may return before goroutines finish // SOLUTION: sync.WaitGroup var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) // register ONE more goroutine â do this BEFORE go go func(n int) { defer wg.Done() // signal this goroutine is complete fmt.Printf("worker %d\n", n) }(i) } wg.Wait() // block until all goroutines call Done() â counter reaches 0 fmt.Println("all workers finished") // Output (order may vary): // worker 3 // worker 1 // worker 0 // worker 4 // worker 2 // all workers finished
More Related questions...