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