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)
}