Sobes.tech
Junior — Middle

Como implementar a troca de informações entre duas goroutines na linguagem Go?

sobes.tech IA

Resposta da IA

Em Go, a troca de informações entre duas goroutines é geralmente implementada usando canais (channels). Os canais permitem transmitir dados de forma segura entre goroutines e sincronizá-las.

Exemplo de troca através de um canal:

package main

import (
    "fmt"
)

func sender(ch chan<- string) {
    ch <- "Olá do sender"
}

func receiver(ch <-chan string) {
    msg := <-ch
    fmt.Println("Mensagem recebida:", msg)
}

func main() {
    ch := make(chan string)
    go sender(ch)
    go receiver(ch)

    // Esperar que as goroutines terminem
    var input string
    fmt.Scanln(&input)
}

Aqui, sender envia uma string para o canal, e receiver lê dela. Os canais garantem uma troca segura de dados sem a necessidade de usar mutexes ou outros mecanismos de sincronização.