Canales Bufferizados en la Programación de Go

Beginner

This tutorial is from open-source community. Access the source code

Introducción

Este laboratorio tiene como objetivo probar tu comprensión de los canales bufferizados en Golang.

Bufferización de canales

Por defecto, los canales en Golang son no bufferizados, lo que significa que solo aceptan envíos (chan <-) si hay una recepción correspondiente (<- chan) lista para recibir el valor enviado. Sin embargo, los canales bufferizados aceptan un número limitado de valores sin un receptor correspondiente para esos valores. En este laboratorio, se te pide crear un canal bufferizado y enviar valores al canal sin una recepción concurrente correspondiente.

  • Conocimientos básicos de los canales de Golang
  • Comprensión de los canales bufferizados
$ go run channel-buffering.go
buffered
channel

A continuación está el código completo:

// Por defecto, los canales son _no bufferizados_, lo que significa que
// solo aceptarán envíos (`chan <-`) si hay una
// recepción correspondiente (`<- chan`) lista para recibir el
// valor enviado. Los _canales bufferizados_ aceptan un número limitado
// de valores sin un receptor correspondiente para esos valores.

package main

import "fmt"

func main() {

    // Aquí `hacemos` un canal de cadenas con un buffer de hasta
    // 2 valores.
    mensajes := make(chan string, 2)

    // Debido a que este canal está bufferizado, podemos enviar estos
    // valores al canal sin una recepción concurrente correspondiente.
    mensajes <- "buffered"
    mensajes <- "channel"

    // Más tarde podemos recibir estos dos valores como de costumbre.
    fmt.Println(<-mensajes)
    fmt.Println(<-mensajes)
}

Resumen

En este laboratorio, has aprendido cómo crear un canal bufferizado en Golang y enviar valores al canal sin una recepción concurrente correspondiente. Esto es útil en escenarios donde desees enviar valores a un canal sin bloquear al emisor.