用于表示一个符号常量。用数值来指定Unicode码。在go中,我们可以直接使用单引号将字母括起来的方式来表明这个常量是什么。如:
type key struct{
x rune
}
var kk =key{'x'}
一个channel(通道)提供一个机制,并发的执行方法以及相互传递指定元素类型的值。没有经过初始化的channel是__nil__。
ChannelType = ( "chan" [ "<-" ] | "<-" "chan" ) ElementType .
<-
操作指定channel的方向,发送或接收。如果方向没有指定,channel就是双向的。一个channel可能仅包含发送或接收。
chan T // 可以用于发送或接收T类型的数据
chan<- float64 // 仅能够发送float64类型的数据
<-chan int // 仅能够接收int类型的数据
带有左侧辅助chan的<-
操作符:
chan<- chan int // 与 chan<- (chan int) 相同
chan<- <-chan int // 与 chan<- (<-chan int) 相同
<-chan <-chan int // 与 <-chan (<-chan int) 相同
chan (<-chan int)
一个新的channel可以使用内建方法make来初始化,在make方法中,需要带有chan的类型与容量:
容器的数量设置channel中缓存的尺寸。如果容量大于0,channel就是异步的:只要缓存不满(发送)或非空(接收),通信就是非阻塞的。如果容量为0或不存在,只有当发送者与接收者都准备就绪后,都会通信成功。一个nil
channel永远不会处在准备就绪状态。
一个channel可以被内建方法close
关闭;可以使用被赋予多个值的接收操作测试一个channel是否被关闭。