在下面的代码中:
package main
func main() {
array := [4]int{1, 2, 3, 4}
length := len(array)
for i:=0,j:=length-1; i < length/2; i++, j--{
array[i], array[j] = array[j], array[i]
}
fmt.Println(array)
}
for循环中的init语句,
i:=0,j:=length-1
给出错误:expected boolean or range expression, found assignment
for 循环中的 init 语句允许逗号分隔赋值吗?
for
语句的init语句是一个简单的语句:
ForClause = [ InitStmt ] ";" [ Condition ] ";" [ PostStmt ] . InitStmt = SimpleStmt . PostStmt = SimpleStmt .
其中简单陈述是:
SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecStmt | Assignment | ShortVarDecl .
您对分配感兴趣,即:
Assignment = ExpressionList assign_op ExpressionList . assign_op = [ add_op | mul_op ] "=" .
总而言之,一个赋值可能是一个元组赋值,所以你可以像这样做你想做的事:
for i, j := 0, length-1; i < length/2; i, j = i+1, j+1 {
array[i], array[j] = array[j], array[i]
}