Junior — Middle
Como é que a troca de mensagens entre o remetente e o destinatário de dados é realizada na linguagem Go?
sobes.tech IA
Resposta da IA
Na linguagem Go, a troca de mensagens entre o remetente e o destinatário de dados é realizada através de canais (channels). Os canais permitem que as goroutines troquem dados de forma segura, sincronizando a sua execução.
Um canal é criado com a função make e pode ser com buffer ou sem buffer:
ch := make(chan int) // canal sem buffer
chBuf := make(chan int, 5) // canal com buffer de tamanho 5
Envio para o canal:
ch <- 42 // enviar o valor 42 para o canal ch
Receber do canal:
value := <-ch // obter o valor do canal ch
Exemplo de troca de mensagens entre duas goroutines:
package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go func() {
ch <- "Olá da goroutine"
}()
msg := <-ch
fmt.Println(msg)
}
Assim, os canais em Go proporcionam uma comunicação segura e conveniente entre fluxos de execução paralelos.