go1.23 新的正式特性 range ofer func 看了下没怎么看懂。。。
for range 返回一个函数,函数里面还是 for range 或者就 for 循环:
```go
func Backward[E any](s []E) func(func(int, E) bool) {
return func(yield func(int, E) bool) {
for i := len(s) - 1; i >= 0; i-- {
if !yield(i, s) {
return
}
}
return
}
}
func main() {
sl := []string{"hello", "world", "golang"}
for i, s := range Backward(sl) {
fmt.Printf("%d : %s\n", i, s)
}
}
```
`Backward`这个函数这形式看起来还真有点复杂,不好理解。。。。可能例子不是相应场景下需要的,看半天没理解。
感觉一般都用不上。 |
|