http://golang.org/ref/spec#RangeClauseRangeClause = ( ExpressionList "=" | IdentifierList ":=" ) "range" Expression .试图理解范围子句,特别是标识符和表达式之间的区别谢谢。
1 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
使用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)
}
}
- 1 回答
- 0 关注
- 224 浏览
添加回答
举报
0/150
提交
取消