专业五


channel通道

通道:channel是一种特殊的类型,通道像一个传送带或者队列,总是遵循先入先出的规则,保证收发数据的顺序。每一个通道都是一个具体类型的导管,也就是声明channel的时候需要为其指定元素类型 如何定义通道类型: 这样定义出来的是空值(nil),不能使用

可以使用make初始化之后才能使用 例如:

通道channel操作: 发送 send 接收 receive 关闭 close 发送 接收都使用<-符号

chan <-t 只写通道 <-chan t 只读通道

死锁是指两个或两个以上的协程的执行过程中,由于竞争资源而阻塞的现象

死锁如何如何形成的: 1.一个通道在一个主goroutine协程里同时进行读和写。也会造成死锁 2.协程开启之前就放数据,还没有准备好,就放数据,就会造成死锁

select:可以同时响应多个通道进行操作

缓冲通道:先进先出的原则。第一个进去的第一个被读取到,可以理解为,一个从管道的一端放入,一个从管道的另一端读取。 for range 就是遍历所有数据,当没有数据的时候也就循环结束。所以可以 替代 v,ok:=<-ch1

页面列表

ITEM_HTML