http://golang.org/ref/spec#RangeClause
RangeClause = ( ExpressionList "=" | IdentifierList ":=" ) "range" Expression .
谢谢。
http://golang.org/ref/spec#RangeClause
RangeClause = ( ExpressionList "=" | IdentifierList ":=" ) "range" Expression .
谢谢。
使用range
关键字,您可以迭代许多事情并在这样做的同时分配结果。您可以分配给两件事:
IdentifierList
)ExpressionList
)这些是用于内部循环的新变量。它们必须遵守标识符规则(unicode 名称、无空格等)。如果您使用这些,则必须:=
在列表和range
关键字之间使用运算符。
例子:
for i := range []int{1,2,3} {
fmt.Println(i)
}
您不一定需要声明新变量,您可以使用现有变量,甚至可以评估返回存储位置的表达式。几个例子:
分配给指针(Play):
var i = 0
func main() {
p := &i
for *p = range []int{1,2,3} {
fmt.Println(i)
}
}
返回一个指针并分配它(Play):
var i = 0
func foo() *int {
return &i
}
func main() {
for *foo() = range []int{1,2,3} {
fmt.Println(i)
}
}