Broadcast a signal on a channel

yourbasic.org/golang

All readers receive zero values on a closed channel.

In this example the Publish function returns a channel, which is used to broadcast a signal when a message has been published.

// Print text after the given time has expired. // When done, the wait channel is closed. func Publish(text string, delay time.Duration) (wait <-chan struct{}) {	ch := make(chan struct{})	go func() {	time.Sleep(delay)	fmt.Println("BREAKING NEWS:", text) close(ch) // Broadcast to all receivers.	}()	return ch }

Notice that we use a channel of empty structs: struct{}. This clearly indicates that the channel will only be used for signalling, not for passing data.

This is how you may use the function.

func main() {	wait := Publish("Channels let goroutines communicate.", 5*time.Second)	fmt.Println("Waiting for news...") <-wait	fmt.Println("Time to leave.") }
 Waiting for news... BREAKING NEWS: Channels let goroutines communicate. Time to leave.