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

 

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM