Go 中的 range-over-func

WBOY
发布: 2024-08-19 04:42:32
原创
224 人浏览过

range-over-func in Go

Go1.23 带来了在 go1.22 中实验的 range-over-func 功能,如果有人读过示例代码,你可能需要思考一下。不要那样做。 P'Yod会用非常简单的方式解释给你看

从带有范围子句的 For 语句规范开始,添加了 3 种类型的表达式:

雷雷

我想添加一个变量来解释如下

雷雷

规范中说,当我们使用函数 f 作为 rage 中的表达式时,每次在完成函数 f 之前调用yield 函数,我们都会在每个循环中得到结果。等于我们插入产量的值,当我解释它时我仍然很困惑。现在最好写代码

雷雷

输出:

雷雷

如果我们这样写代码,我们会得到2个完整的循环,因为根据规范,我们在f中调用了两次yield,这里我们将其命名为loop,它不会返回任何东西给我们。因为我们选择使用一个yield模式,根本不接受任何参数

另一个例子

雷雷

输出:

雷雷

这样我们也会得到2轮,因为我们调用了一次yield,现在range将返回2个值,分别是3和7,我们每次都用它们来调用yield

另一个例子

雷雷

输出:

雷雷

每次输入yield时,我们会得到3个循环,每次都会得到2个值
我们还可以通过插入任何类型的参数来调用yield,例如

雷雷

现在我们了解了它的机制,当我们去阅读困难的例子时,我们会理解更多,比如Go Wiki中的例子:Rangefunc Experiment

雷雷

主要

雷雷

更容易阅读,对吧?最后,如何应用它取决于您。我们只看yield被调用了多少次。只有当你把它放在范围内时你才会得到它
至于会出来的值,就是掉入yield的值了

就这样了。

以上是Go 中的 range-over-func的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!