// *** before: ***
func Backward(s []string) []string {
r := make([]string, len(s))
for i, v := range s {
r[len(s)-1-i] = v
}
return r
}
for _, v := range Backward([]string{"a", "b", "c"}) {
fmt.Println(v)
}
// перед обходом всегда собирался промежуточный срез
// *** in version 1.23: ***
func Backward(s []string) iter.Seq[string] {
return func(yield func(string) bool) {
for i := len(s) - 1; i >= 0; i-- {
if !yield(s[i]) {
return
}
}
}
}
for v := range Backward([]string{"a", "b", "c"}) {
fmt.Println(v) // "c", "b", "a" без промежуточного среза
}