Parámetros de función de canales en Golang

GolangGolangBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este laboratorio tiene como objetivo probar tu comprensión del uso de canales como parámetros de función en Golang.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/ConcurrencyGroup(["Concurrency"]) go/ConcurrencyGroup -.-> go/channels("Channels") subgraph Lab Skills go/channels -.-> lab-15457{{"Parámetros de función de canales en Golang"}} end

Direcciones de los canales

El problema que se debe resolver en este laboratorio es modificar el código dado para asegurarse de que los canales utilizados como parámetros de función se especifiquen para solo enviar o recibir valores.

  • Conocimientos básicos de Golang
  • Comprensión de los canales y su uso en Golang
$ go run channel-directions.go
mensaje pasado

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

// Cuando se utilizan canales como parámetros de función, se puede
// especificar si un canal está destinado a solo enviar o recibir
// valores. Esta especificidad aumenta la seguridad tipográfica
// del programa.

package main

import "fmt"

// Esta función `ping` solo acepta un canal para enviar
// valores. Sería un error de compilación intentar
// recibir en este canal.
func ping(pings chan<- string, msg string) {
	pings <- msg
}

// La función `pong` acepta un canal para recibir
// (`pings`) y otro para enviar (`pongs`).
func pong(pings <-chan string, pongs chan<- string) {
	msg := <-pings
	pongs <- msg
}

func main() {
	pings := make(chan string, 1)
	pongs := make(chan string, 1)
	ping(pings, "mensaje pasado")
	pong(pings, pongs)
	fmt.Println(<-pongs)
}

Resumen

En este laboratorio, aprendiste cómo especificar si un canal está destinado a solo enviar o recibir valores, lo que aumenta la seguridad tipográfica del programa.