• [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)
    	}
    }
    

      

      

  • 相关阅读:
    第十一周作业
    第十周作业
    第九周编程
    第十二周作业
    第十一周作业
    第十周作业
    第八周作业
    第七周作业
    第五周作业
    2019春季学期第四周作业
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10423451.html
Copyright © 2020-2023  润新知