AnyCompiler

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)
}
Output
[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.