Форма range
для l oop выполняет итерации по срезу или карте.
При определении диапазона по срезу для каждой итерации возвращаются два значения:
- Первый - это индекс среза;
- Второй - это копия элемента с этим индексом.
Предположим, что у нас есть функция, которая проверяет, является ли число a 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()
}
}
}
С первым l oop мы итерируем value
массива.
Со вторым l oop мы итерируем index
массива. Это пример с int
. Вы можете заменить массив строкой и перебрать байты строки.