Sobes.tech
Junior — Middle

Pode explicar o que são canais síncronos e como eles funcionam na programação?

sobes.tech IA

Resposta da IA

Os canais síncronos na programação, especialmente em Go, são canais que bloqueiam o remetente até que o destinatário leia os dados, e vice-versa. Ou seja, a transferência de dados ocorre apenas quando ambas as partes estão prontas.

Em Go, um canal sem buffer é síncrono. Exemplo:

ch := make(chan int) // canal síncrono

// Envio
go func() {
    ch <- 42 // bloqueia até que alguém leia
}()

// Receção
val := <-ch // bloqueia até que alguém envie
fmt.Println(val)

Aqui, o envio no canal ch aguardará até que outra goroutine leia o valor, e vice-versa. Isso permite sincronizar a execução das goroutines e trocar dados sem usar mecanismos adicionais de sincronização.