Junior — Middle
Fale sobre a sua experiência no uso de canais para organizar a interação entre componentes ou threads.
sobes.tech IA
Resposta da IA
Em Go, os canais são utilizados para organizar uma troca segura de dados entre goroutines, o que simplifica a sincronização e a comunicação.
Exemplo de uso de um canal para transmitir dados entre duas goroutines:
package main
import (
"fmt"
"time"
)
func worker(ch chan string) {
msg := <-ch // receber mensagem do canal
fmt.Println("Mensagem recebida:", msg)
}
func main() {
ch := make(chan string)
go worker(ch)
ch <- "Olá do main!" // enviar mensagem ao canal
time.Sleep(time.Second) // esperar a goroutine terminar
}
Os canais ajudam a evitar condições de corrida e tornam o código mais legível e fácil de manter ao trabalhar com concorrência.