究竟什么是“范围”?它是一个函数吗?

循环遍历数组和切片的一种首选方法是range像这样使用


arr = []int{1, 2}


for index, item := range arr {

  continue

}

我知道它是如何range工作的,我已经多次使用它。但我仍然不确定幕后是什么。它是 的功能和修改range(arr)吗?它返回 2 个变量的事实让我这么想,但我需要确认。


它背后的实现是什么?


烙印99
浏览 101回答 3
3回答

江户川乱折腾

根据规范,范围是关键字之一。The following keywords are reserved and may not be used as identifiers.break        default      func         interface    selectcase         defer        go           map          structchan         else         goto         package      switchconst        fallthrough  if           range        typecontinue     for          import       return       var对于带有范围子句的语句带有“range”子句的“for”语句遍历数组、切片、字符串或映射的所有条目,或通道上接收的值。对于每个条目,如果存在,它将迭代值分配给相应的迭代变量,然后执行该块。RangeClause = [ ExpressionList "=" | IdentifierList ":=" ] "range" Expression .

12345678_0001

带有子句for的range子句迭代在通道上接收到的数组、切片、映射、字符串和值。range 关键字是编译器用来区分这种类型的迭代和for语句中的其他迭代的语法。编译器for使用range子句实现。规范用范围子句详细描述了 for。

Helenr

这是 for 循环用来从中获取下一个对象的迭代器模式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go