index
We can use channels to synchronize execution across goroutines. Here's an example of using a blocking receive to wait for a goroutine to finish. When waiting for multiple goroutines to finish, you may prefer to use a [WaitGroup](waitgroups).
package main
import (
	"fmt"
	"time"
)
This is the function we'll run in a goroutine. The `done` channel will be used to notify another goroutine that this function's work is done.
func worker(done chan bool) {
	fmt.Print("working...")
	time.Sleep(time.Second)
	fmt.Println("done")
Send a value to notify that we're done.
	done <- true
}
func main() {
Start a worker goroutine, giving it the channel to notify on.
	done := make(chan bool, 1)
	go worker(done)
Block until we receive a notification from the worker on the channel.
	<-done
working...done
}
index