Goroutines
Ek goroutine ek lightweight, independently-running function hai, jo ek function call ke aage go lagakar shuru kiya jaata hai. Goroutines sasta hote hain — ek Go program ek sath 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 tareeqa hai jisse main ek group ke goroutines ke finish hone ka intezaar karta hai aage barhne se pehle — wg.Add(1) ek goroutine ko intezaar 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 mehfooz tareeqe se kaise communicate karte hain.
Practice exercise
Ek sync.WaitGroup istemal karein ek goroutine chalane ke liye jo ek variable result := 0 ko 100 set kare, uske finish hone ka intezaar karte hue result print karne se pehle.