tgoop.com/golang_digest/187
Create:
Last Update:
Last Update:
Развлекаемся с итераторами в Go
Перевод и оригинал
Очередной пост про итераторы в Go. Не воспринимайте его как руководство к действию, такого посыла там и нет. Скорее как повод порассуждать.
В чём суть. Автор недоволен громоздкими конструкциями по типу:
// В пакете slices нет функций Map, Filter или ForEach
// Это просто пример
slices.ForEach(
slices.Filter(
slices.Map(
slices.Reverse(slices.All([]int{1,2,3,4})),
func(i int) int { return i * i},
),
func(i int) bool { return i % 2 == 0 }
),
func(i int) { fmt.Println(i) }
)
И хочет сделать как в JS:
From([]int{1,2,3,4}).
Reverse().
Map(func(i int) int { return i * i }).
Filter(func(i int) bool { return i%2 == 0 })
Поэтому он реализовал методы: From (создание итератора), Collect (сбор в слайс), Each (обход), Reverse (разворот), Map (преобразование) и Filter.
Получается, конечно, красиво, но автор сам же признаёт:
я понимаю почему команда Go реализовала итераторы по другому
А я напомню, что желание красоты, без учёта других потребностей, когда-то привело людей к CoffeeScript.
#iterators #go_1_23
BY Golang Дайджест

Share with your friend now:
tgoop.com/golang_digest/187