Junior — Middle
Can you name the main methods of implementing broadcast data transfer?
sobes.tech AI
Answer from AI
In Go (Golang), broadcasting data can be implemented in several ways:
-
Using channels with multiple receivers:
- Create a channel and send data into it.
- Each receiver reads from the channel, but standard Go channels do not support multiple delivery of the same message, so this is not true broadcast.
-
Publish/subscribe pattern (pub/sub):
- Create a structure that holds a list of subscriber channels.
- When a message is sent, it is copied to all subscriber channels.
-
Using external systems:
- For example, Redis Pub/Sub, NATS, or other message brokers to implement broadcasting.
Example of simple pub/sub in Go:
package main
import "fmt"
func broadcaster(channels []chan string, msg string) {
for _, ch := range channels {
ch <- msg
}
}
func main() {
ch1 := make(chan string)
ch2 := make(chan string)
go func() {
fmt.Println("Receiver 1 received:", <-ch1)
}()
go func() {
fmt.Println("Receiver 2 received:", <-ch2)
}()
broadcaster([]chan string{ch1, ch2}, "Hello everyone!")
}
Thus, for broadcasting in Go, custom mechanisms using channels and goroutines are usually created.