Форма range
цикла for выполняет итерации по срезу или карте.
При определении диапазона по срезу для каждой итерации возвращаются два значения. Первый - это индекс, а второй - копия элемента с этим индексом.
Давайте предположим, что у нас есть функция, которая проверяет, является ли число prime number
, и у нас есть массив счисла кандидатов, чем мы можем вызвать функцию двумя различными способами:
var prime []int = []int{2, 3, 5, 7, 11, 13, 17, 19, 23}
func TestIsPrimeByValue(t *testing.T) {
for _, item := range prime {
if !IsPrime(item) {
t.Fail()
}
}
}
func TestIsPrimeByIndex(t *testing.T) {
for i := range prime {
if !IsPrime(prime[i]) {
t.Fail()
}
}
}
В первом цикле мы перебираем значение массива.
Во втором цикле мы перебираем индексмассива.