zoukankan      html  css  js  c++  java
  • [Go] golang的range循环遍历通道

    range循环会无限在channels上面迭代

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    
    	//创建一个通道
    	ch := make(chan int)
    	//开启一个goroutine
    	go func() {
    		//无限循环
    		for {
    			//往通道里发送数据
    			ch <- 1
    			//睡眠一秒
    			time.Sleep(time.Second)
    		}
    	}()
    	//无限循环从通道中读取数据
    	for i := range ch {
    		fmt.Println(i)
    	}
    
    }
    

    和下面的无限读取是等价的

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    
    	//创建一个通道
    	ch := make(chan int)
    	//开启一个goroutine
    	go func() {
    		//无限循环
    		for {
    			//往通道里发送数据
    			ch <- 1
    			//睡眠一秒
    			time.Sleep(time.Second)
    		}
    	}()
    	//无限循环从通道中读取数据
    	for {
    		i, ok := <-ch
    		if !ok {
    			break
    		}
    		fmt.Println(i)
    	}
    }
    

      

      

  • 相关阅读:
    RabbitMQ(四)
    RabbitMQ(三)
    RabbitMQ(二)
    定位
    响应式布局
    学习前端的一些心得
    css样式大全
    常用标签
    HTML
    app 被拒绝原因
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10423451.html
Copyright © 2011-2022 走看看