Sobes.tech
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.