channel簡介
channel 是用來通信的,通過它,一個 goroutine 可以想另一 goroutine 發(fā)送消息。channel 本身還需關(guān)聯(lián)了一個類型,也就是 channel 可以發(fā)送數(shù)據(jù)的類型。例如: 發(fā)送 int 類型消息的 channel 寫作 chan int 。
channel類型
channel有2種 有size 和無size

無size

有size
ChannelType = ( "chan" | "chan" "<-" | "<-" "chan" ) ElementType .
它包括三種類型的定義??蛇x的<-代表channel的方向。如果沒有指定方向,那么Channel就是雙向的,既可以接收數(shù)據(jù),也可以發(fā)送數(shù)據(jù)。
單向無法轉(zhuǎn)為雙向
重復(fù)關(guān)閉同一個 channel 會產(chǎn)生 panic

重復(fù)關(guān)閉同一個 channel

結(jié)果
向一個已關(guān)閉的 channel 中發(fā)送消息會產(chǎn)生 panic

向一個已關(guān)閉的 channel?

結(jié)果
無size的channel要配合go使用


結(jié)果

且輸入要在go里

結(jié)果
go 與channel
1有沒有size的channel配合go都不會出現(xiàn)意外

1
2.1無size的channel?有關(guān)閉channel

關(guān)閉后不管讀幾次值都是0
2.2無size的channel 沒有關(guān)閉channel

沒關(guān)閉讀一次正常

沒關(guān)閉讀的次數(shù)只要大于1就會報錯fatal error: all goroutines are asleep - deadlock!
2.3 有size的channel 沒有關(guān)閉channel

寫幾次就要讀幾次,不然會報錯
2.4 有size的channel 有關(guān)閉channel
