Lab 01: Goroutines & Channels
Overview
Step 1: Goroutine Lifecycle
// lifecycle.go
package main
import (
"fmt"
"time"
)
func worker(id int, done chan<- struct{}) {
fmt.Printf("worker %d: starting\n", id)
time.Sleep(10 * time.Millisecond)
fmt.Printf("worker %d: done\n", id)
done <- struct{}{}
}
func main() {
done := make(chan struct{})
go worker(1, done)
<-done // block until worker finishes
fmt.Println("main: all workers done")
}Step 2: Unbuffered vs Buffered Channels
Step 3: Channel Directions
Step 4: Range Over Channel & close()
Step 5: Fan-Out Pattern
Step 6: Fan-In Pattern
Step 7: Putting It All Together
Step 8: Capstone — Pipeline
Summary
Concept
Key Points
Last updated
