range over a channel

suggest change

Iterating over a channel with range:

main.go

func fillAndCloseChannel(ch chan int) {
	for i := 0; i < 3; i++ {
		ch <- i + 3
	}
	close(ch)
}

	ch := make(chan int)
	go fillAndCloseChannel(ch)

	for v := range ch {
		fmt.Printf("v: %d\n", v)
	}

Output:

v: 3
v: 4
v: 5

range over a channel receives elements sent over a channel.

Iteration ends when channel is closed.

This is a more convenient version of:

	ch := make(chan int)
	go fillAndCloseChannel(ch)

	for {
		v, ok := <-ch
		if !ok {
			break
		}
		fmt.Printf("v: %d\n", v)
	}

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents