Значения среза через итератор в Go
Значения среза можно отдать в цикл без
индексов через готовый итератор. Перебор
с двумя переменными по-прежнему дает позицию
и элемент, а когда индекс не нужен, достаточно
одной переменной и шага из пакета slices.
В пакете slices команда Values
принимает срез и возвращает итератор по
типу элемента.
Порядок совпадает с порядком в срезе: от
первого элемента к последнему, без сюрпризов
как у карты.
На экране три строки 10, 20
и 30 в том же порядке, что в nums.
Сам срез при этом не копируют в новый массив:
итератор лишь по одному отдает уже лежащие
значения.
Выведем элементы среза по очереди:
package main
import (
"fmt"
"slices"
)
func main() {
nums := []int{10, 20, 30}
for v := range slices.Values(nums) {
fmt.Println(v)
}
}
Дан следующий срез:
letters := []string{"a", "b", "c"}
Выведите каждый элемент letters через
итератор значений из пакета slices.
Дан следующий срез:
vals := []int{3, 5, 7}
Найдите сумму элементов vals в цикле
без индекса, только по значениям.
Дан следующий код:
data := []int{1, 2}
for i, v := range data {
fmt.Println(i, v)
}
Перепишите цикл так, чтобы осталась одна переменная со значением, а индекс не использовался.