Sobes.tech
Junior — Middle

¿Puedes dar un ejemplo de cuándo y cómo se utilizan los canales para intercambiar datos entre hilos o goroutines?

sobes.tech AI

Respuesta de la IA

En Go, los canales se utilizan para intercambiar datos de manera segura entre goroutines, permitiendo sincronizarlas y transmitir valores.

Ejemplo de uso de un canal para transmitir números de una goroutine a otra:

package main

import (
    "fmt"
    "time"
)

func productor(ch chan int) {
    for i := 0; i < 5; i++ {
        ch <- i // enviando datos al canal
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // cerrando el canal después de enviar todos los datos
}

func consumidor(ch chan int) {
    for val := range ch { // recibiendo datos del canal
        fmt.Println("Recibido:", val)
    }
}

func main() {
    ch := make(chan int)
    go productor(ch)
    consumidor(ch)
}

Aquí, productor envía números al canal, y consumidor los lee. Los canales aseguran una transmisión segura de datos sin necesidad de usar mutexes u otros mecanismos de sincronización.