码迷,mamicode.com
首页 > 其他好文 > 详细

GO精髓(Channel)

时间:2020-12-25 12:21:49      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:sele   复用   make   需要   结构   print   关闭   ISE   使用   

通道(Channel)

       /*
	通道(channel)是用来传递数据的一个数据结构。
	*/
	ch1 := make(chan int ,2) //创建一个可读可写的双向管道
	ch1 <- 10
	ch1 <- 12

	m1 := <-ch1
	m2 := <-ch1
	fmt.Println(m1,m2)

	ch2 := make(chan <- int ,2) //创建一个只可写的管道
	ch2 <- 10
	ch2 <- 12
	ch3 := make(<-chan  int ,2) //创建一个只可读的管道

select(多路复用)

//定义个管道 10个数据int
	intChan := make(chan int,10)
	for i:=1 ; i< 10 ;i++ {
		intChan <- i
	}
	
	//定义个管道 10个 数据string
	stringChan := make(chan string ,10)
	for i:=1 ;i < 5 ;i++ {
		stringChan <- "hello"+fmt.Sprintf("%d",i)
	}
	//使用select不需要关闭channel
	for  {
		select {
		case v := <-intChan:
			fmt.Println("从intChan里面取数据%d",v)
			time.Sleep(time.Millisecond * 50)
		case v := <-stringChan:
			fmt.Println("从stringChan里面取数据%v",v)
			time.Sleep(time.Millisecond * 50)
		default:
			fmt.Println("所有数据获取完毕")
			return  //跳出循环
		}
	}

  

  

GO精髓(Channel)

标签:sele   复用   make   需要   结构   print   关闭   ISE   使用   

原文地址:https://www.cnblogs.com/finnlee/p/14165538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!