64 条回复  ·  915 次点击
cmdOptionKana 初学 2024-8-19 11:51:09
挺好的啊,Go 的这个函数就像一个外皮透明的动物,让你一眼看见里面的食道和胃具体是怎样消化食物的,非常直白。写 Go 真的让人头脑清晰,而且过一段时间回头看也条理清晰,比一堆语法糖好多了。
stevenshuang 小成 2024-8-19 11:52:55
@dyllen yield 没有增加,yield 就是那个函数的命名。https://go.dev/ref/spec#Keywords
leonshaw 小成 2024-8-19 11:53:02
@dyllen yield 是参数名。这东西看起来就是 for-range 简单地帮你生成了一个回调函数。
it := Backward(sl)
cb := func(i int, s string) bool {
    fmt.Printf("%d : %s\n", i, s)
    return true
}
it(cb)
vfs 小成 2024-8-19 11:57:33
@sagaxu 感觉从支持泛型的那一版就已经走下坡路了.
yqf0215 小成 2024-8-19 12:06:55
@PTLin 这个特性,也被大佬抨得一塌糊涂,太复杂了。
这个特性除了炫耀自己编程厉害,并没有什么特殊的好处,其功能用其他方式同样能完成,还容易读。说与其弄这些,不如提升性能。
MoYi123 小成 2024-8-19 12:08:00
Backward 里的 func 套 func 是函数式编程里的常见的惰性求值的写法. 不觉得有什么问题.
ChrisFreeMan 小成 2024-8-19 12:16:44
我觉得还好,多看几眼觉得很合理。
sophos 小成 2024-8-19 12:40:38
我感觉这个特性是很有用的,主要是用在提供常用操作的组件中,调用方的代码还是比较直观的

至于写组件的时候,可以直接用 iter.Seq 或 iter.Seq2 ,别直接用匿名函数就行,还好吧
dacapoday 小成 2024-8-19 12:52:07
高阶函数而已,比较取巧,但合理。
Nazz 小成 2024-8-19 12:58:28
笑了, 这么多人又菜又爱喷

经常写数据结构的人不会对这个接口感到陌生:

```go
type Ranger[K comparable, V any] interface {
        Range(k K, v V) bool
}
```

有了 range ofer func 语法糖, 可以非常方便地返回上层函数
返回顶部