Generators in Go

While Go does not have an official construct for generators, it is possible to use channels to achieve the same effect. Below is a function called count that generates numbers from 0 to n.

// Generator that counts to n //

func count(n int) (chan int) {
	ch := make(chan int)
	go func () {
		for i := 0; i < n; i++ {
			ch <- i
	return ch

func main() {
	for i := range count(10) {
		fmt.Println("Counted", i)

As you can see, our main function can now use count like a generator without needing to handle channel creation.

golang tutorial