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