英文:
What is "range" actually? Is it a function?
问题
range
是 Go 语言中用于遍历数组和切片的首选方法之一。它并不是一个函数,而是一种语法结构。range
会返回两个值,一个是当前元素的索引,另一个是当前元素的值。你可以使用这两个值在循环中进行操作。
range
的实现原理是根据被遍历的对象的类型来确定。对于数组和切片,range
会返回每个元素的索引和值。对于字符串,range
会返回每个字符的索引和 Unicode 编码。对于映射(map),range
会返回每个键值对的键和值。
在循环中,你可以选择忽略其中一个返回值,比如只需要值而不需要索引,可以使用下划线 _
来忽略索引的变量。
希望这个解释对你有帮助!如果你还有其他问题,请随时提问。
英文:
One of the preferred way to loop through arrays and slices is to use range
like this
arr = []int{1, 2}
for index, item := range arr {
continue
}
I know how range
works, I've been using it multiple times. But I'm still not sure what it is behind the scene. Is it a function and a modification of range(arr)
? The fact that it returns 2 variables make me think that way, but I need a confirmation.
What's the implementation behind it?
答案1
得分: 6
范围是根据规范中的关键字之一。以下是关键字列表:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
使用范围子句的for语句
带有范围子句的"for"语句遍历数组、切片、字符串、映射或从通道接收的值的所有条目。对于每个条目,如果存在相应的迭代变量,则将迭代值分配给相应的迭代变量,然后执行代码块。
范围子句的语法如下:
RangeClause = [ ExpressionList "=" | IdentifierList ":=" ] "range" Expression.
英文:
Range is one of the keywords according to the spec.
>plaintext
>The following keywords are reserved and may not be used as identifiers.
>
>break default func interface select
>case defer go map struct
>chan else goto package switch
>const fallthrough if range type
>continue for import return var
>
For statements with range clause
> A "for" statement with a "range" clause iterates through all entries of an array, slice, string or map, or values received on a channel. For each entry it assigns iteration values to corresponding iteration variables if present and then executes the block.
>
>
>RangeClause = [ ExpressionList "=" | IdentifierList ":=" ] "range" Expression .
>
答案2
得分: 3
一个带有range
子句的for
循环可以迭代数组、切片、映射、字符串和从通道接收到的值。range
关键字是编译器用来区分这种类型的迭代与for
语句中的其他迭代的语法。
编译器使用range
子句实现for
循环。规范详细描述了带有range子句的for循环。
英文:
A for
with a range
clause iterates over arrays, slices, map, strings and values received on a channel. The range
keyword is syntax used by the compiler to distinguish this type of iteration from other iteration in a for
statement.
The compiler implements for
with a range
clause. The specification describes for with a range clause in detail.
答案3
得分: 0
这是一个迭代器模式,for循环使用它来获取下一个对象。
英文:
It's an iterator-pattern which the for-loop uses to get the next object from.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论