go1.23 新的正式特性 range over func 看了下没怎么看懂。。。
for range 返回一个函数,函数里面还是 for range 或者就 for 循环:
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[i]) {
return
}
}
return
}
}
func main() {
sl := []string{"hello", "world", "golang"}
for i, s := range Backward(sl) {
fmt.Printf("%d : %s\n", i, s)
}
}
Backward
这个函数这形式看起来还真有点复杂,不好理解。。。。可能例子不是相应场景下需要的,看半天没理解。
感觉一般都用不上。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.