channels是go语言中goroutine的通信机制。
每个channel都有一个特殊类型,就是channels可发送数据的类型。一个可以发送int类型数据的channel 一般协程chan int。
使用内置的make函数,我们可以创建一个channel:
ch := make(chan int)
当赋值一个channel活用于函数参数传递适,我们只是拷贝了一个channel引用,因此调用者和被调用者是同一个channel对象。channel的零值也是nil
两个相同类型的channel可以使用==运算符比较。如果两个channel引用相同的对象,那么结果是真。
发送语句: <- 分割channel和要发送的值 channel <- 发送的值 ch <- x
接受语句: <- 运算发写在channel对象之前。 接受的值 <- channel x = <- ch
<- ch 不使用接受结果的接受操作 result is discarded(结果丢弃了 )
创建channel ,可以指定第二个整型参数,对应channel容量,如果channel容量大于零,channel就是带缓冲的channel
ch = make(chan int)
ch =make(chan int,0)
ch = make(chan int,3) //带缓冲,capacity(容量)为3