Junior — Middle
Como é que a transmissão de dados é realizada através de um canal de comunicação não bufferizado?
sobes.tech IA
Resposta da IA
A transferência de dados através de um canal não bufferizado em Go ocorre de forma síncrona: o remetente fica bloqueado até que o destinatário leia os dados, e vice-versa. Isso garante uma sincronização direta entre as goroutines.
Exemplo:
ch := make(chan int) // canal não bufferizado
// Remetente
go func() {
ch <- 42 // fica bloqueado até o destinatário ler
}()
// Destinatário
val := <-ch // fica bloqueado até que um valor apareça
fmt.Println(val) // exibirá 42
Dessa forma, os dados são transmitidos diretamente, sem armazenamento intermediário, garantindo a sincronização entre o remetente e o destinatário.