为什么范围内没有帖子?Golang

The*_*hat -3 go

我想在每个范围循环后增加一个变量.然而,似乎不可能使用标准( for init; condition; post { })语法,因此我想知道为什么.这就是我想要做的

    for item := range itemsList; page++ {

}
Run Code Online (Sandbox Code Playgroud)

似乎唯一的办法就是这样做

        for item := range itemsList{

       page++
    }
Run Code Online (Sandbox Code Playgroud)

这看起来不像第一个那么好.

Von*_*onC 7

for声明规范并提到一个范围条款是独一无二的.

ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .
Run Code Online (Sandbox Code Playgroud)

Post Statement相反,后者是:

ForClause = [ InitStmt ] ";" [ Condition ] ";" [ PostStmt ] .
Run Code Online (Sandbox Code Playgroud)

这意味着post语句仅在初始化和条件的上下文中有效,以便可能使条件发生更改(因为它在每次执行块后执行,并且仅在块执行时执行).

在Range子句中没有这样的需要(使条件停止循环),其中循环已经在范围的所有元素(数组,切片,字符串,映射或通道允许接收操作)上完成)足以让循环停止.

范围表达式在开始循环之前被评估一次(或者至少它的长度是).每次执行块后都无需更改任何内容.

因此,尝试将post语句添加到范围循环会生成编译错误,如:

expected '{', found ';' 
Run Code Online (Sandbox Code Playgroud)