package main
import (
"fmt"
"time"
)
func main() {
//定义信道
pipe := make(chan int)
//定义一个只写信道
type Sender chan<- int
//定义一个只读信道
type Reciver <-chan int
//启动一个发信道协程
go func() {
//定义一个Sender类型,实则一个为一个信道的sender,我理解为pipe和sender绑定了
var sender Sender = pipe
fmt.Println("发出一个数据,值为100")
sender <- 100
}()
go func() {
//定义一个Reciver类型,实则一个为一个信道reciver
var reciver Reciver = pipe
num := <-reciver
fmt.Printf("收到的值为: %d", num)
}()
//主线程main启动延时,因为go协程启动需要时间,main如果执行完了,协程没起起来就会关闭,协程也就关闭了
time.Sleep(time.Second)
}
执行结果: