To notify a handler in Go, you can use channels to communicate between goroutines. Here's a simple example demonstrating how to notify a handler when a task is completed:
package main
import (
"fmt"
"time"
)
// This function simulates a worker that performs some work.
func worker(done chan bool) {
fmt.Print("working...")
time.Sleep(time.Second) // Simulate work with sleep
fmt.Println("done")
// Notify that the work is done
done <- true
}
func main() {
// Create a channel to notify when the worker is done
done := make(chan bool, 1)
// Start the worker goroutine
go worker(done)
// Wait for the notification from the worker
<-done
// Call the handler after receiving the notification
handler()
}
// Example handler function
func handler() {
fmt.Println("Handler notified and executed.")
}
In this example, the worker function performs some work and sends a notification through the done channel when it's finished. The main function waits for this notification before calling the handler function.
