Goroutines
Ek goroutine ek lightweight, independently-running function hai, jo ek function call ke aage go lagakar start kiya jaata hai. Goroutines cheap hote hain — ek Go program ek saath hazaaron chala sakta hai — aur yeh language ka hi ek core part hain, koi add-on library nahi.
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
results := make([]int, 3)
for i := 0; i < 3; i++ {
wg.Add(1)
go func(index int) {
defer wg.Done()
results[index] = index * index
}(i)
}
wg.Wait()
fmt.Println(results)
}[0 1 4]
sync.WaitGroup woh tarika hai jisse main ek group ke goroutines ke finish hone ka wait karta hai aage badhne se pehle — wg.Add(1) ek goroutine ko wait karne ke liye register karta hai, aur har goroutine complete hone par wg.Done() call karta hai; wg.Wait() tab tak block karta hai jab tak har registered goroutine check in na kar le.
Aage: channels — goroutines ek doosre se safely kaise communicate karte hain.
Practice exercise
Ek sync.WaitGroup use karo ek goroutine run karne ke liye jo ek variable result := 0 ko 100 set kare, uske finish hone ka wait karte hue result print karne se pehle.