Unexpected values in range loop

yourbasic.org/golang

Why does this code

primes := []int{2, 3, 5, 7}
for p := range primes {
	fmt.Println(p)
}

print

0
1
2
3

Answer

For arrays and slices, the range loop generates two values:

If you omit the second value, you get only the indices.

To print the data, use the second value instead:

primes := []int{2, 3, 5, 7}
for _, p := range primes {
	fmt.Println(p)
}

In this case, the blank identifier (underscore) is used for the return value you're not interested in.

See 4 basic range loop (for-each) patterns for all about range loops in Go.

Share this page: