通道可以理解为一种特殊的变量,一般用于线程之间的数据传输。声明之后并不能直接使用,需要使用内置函数 make() 来创建一下通道变量才可以使用。
var c chan int //声明一个存放int类型数据的通道
c = make(chan int, 1) // 创建一个长度为1的通道
使用 <- 符号来向通道中塞取数据。放在通道右边 chan <-,就是塞数据,放在通道左边 <- chan ,就是取数据。
package main
import "fmt"
func main() {
c := make(chan int, 1)
c <- 10
i := <-c
fmt.Println(i)
}
用于通道的流程控制语句:select...case。使用这个语句可以同时监听数个通道,非常适合用于并发时的进程调度,或者模块之间的解耦合。
package main
import "fmt"
func main() {
c := make(chan int, 1)
for a := 0; a < 2; a++ {
select {
case i := <-c:
fmt.Println("从通道取", i)
case c <- 10:
fmt.Println("将10塞入通道")
}
}
}
将10塞入通道
从通道取 10
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。