Skip to main content

chan 作为函数参数

只读

好的,这里是 pings <-chan string 的图示:

pings <-chan string
| | |
| | +----- 数据类型 (string)
| +------------ 通道方向 (只读)
+------------------ 变量名 (pings)
  • 变量名 (pings):通道的名称。
  • 通道方向 (只读):表示这个通道只能用于接收数据。
  • 数据类型 (string):通道中传输的数据类型为字符串。

只写

这是一种类似于 Cron 表达式的注释图示,用于解释 pings chan<- string 的各个部分:

pings chan<- string
| | |
| | +----- 数据类型 (string)
| +------------ 通道方向 (只写)
+------------------ 变量名 (pings)
  • 变量名 (pings):通道的名称。
  • 通道方向 (只写):表示这个通道只能用于发送数据。
  • 数据类型 (string):通道中传输的数据类型为字符串。

代码

package main

import "fmt"

func ping(pings chan<- string, msg string) {
pings <- msg
}

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, "passed message")
pong(pings, pongs)
fmt.Println(<-pongs)
}