channel简介
channel 是用来通信的,通过它,一个 goroutine 可以想另一 goroutine 发送消息。channel 本身还需关联了一个类型,也就是 channel 可以发送数据的类型。例如: 发送 int 类型消息的 channel 写作 chan int 。
channel类型
channel有2种 有size 和无size

无size

有size
ChannelType = ( "chan" | "chan" "<-" | "<-" "chan" ) ElementType .
它包括三种类型的定义。可选的<-代表channel的方向。如果没有指定方向,那么Channel就是双向的,既可以接收数据,也可以发送数据。
单向无法转为双向
重复关闭同一个 channel 会产生 panic

重复关闭同一个 channel

结果
向一个已关闭的 channel 中发送消息会产生 panic

向一个已关闭的 channel

结果
无size的channel要配合go使用


结果

且输入要在go里

结果
go 与channel
1有没有size的channel配合go都不会出现意外

1
2.1无size的channel 有关闭channel

关闭后不管读几次值都是0
2.2无size的channel 没有关闭channel

没关闭读一次正常

没关闭读的次数只要大于1就会报错fatal error: all goroutines are asleep - deadlock!
2.3 有size的channel 没有关闭channel

写几次就要读几次,不然会报错
2.4 有size的channel 有关闭channel
