在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 //channel是可以让一个goroutine发送特定值到另一个goroutine的通信机制。 9 //声明通道类型 10 var a chan int //声明一个int类型的通道 ,声明之后需要对它进行初始化 11 fmt.Println(a) 12 ch := make(chan int, 10) //进行初始化 有缓冲的通道 13 ch <- 10 //将10发送到通道中 14 x := <-ch //从通道中将10取出来赋值给x 15 fmt.Println(x) 16 close(ch) //关闭通道 17 //无缓冲通道 18 ch1 := make(chan int) 19 go recv(ch1) 20 ch1 <- 20 21 } 22 23 func recv(c chan int) { 24 ret := <-c 25 fmt.Println(ret) 26 } for range循环读取通道中的值: 1 package main 2 3 import "fmt" 4 5 func main() { 6 7 a := make(chan int) 8 b := make(chan int) 9 go func() { 10 for i := 0; i < 20; i++ { 11 a <- i 12 } 13 close(a) 14 }() 15 go func() { 16 for{ 17 i,ok:=<-a 18 if !ok{ 19 break 20 } 21 b<-i 22 } 23 close(b) 24 }() 25 26 for i:=range b{ 27 fmt.Println(i) 28 } 29 } 单向通道:
在函数传参及任何赋值操作中可以将双向通道转换为单向通道,但反过来是不可以的。 select多路复用: package main 使用
|
请发表评论