Lon*_*ner 0 syntax for-loop curly-braces go
该程序编译成功:
package main
import (
"fmt"
)
func main() {
i := 0
for ; i < 3; i++ {
fmt.Println(i)
}
}
Run Code Online (Sandbox Code Playgroud)
但这不会:
package main
import (
"fmt"
)
func main() {
i := 0
for ; i < 3; i++
{
fmt.Println(i)
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
./prog.go:9:18: syntax error: unexpected newline, expecting { after for clause
Run Code Online (Sandbox Code Playgroud)
但这编译成功:
package main
import (
"fmt"
)
func main() {
i := 0
for
{
fmt.Println(i)
}
}
Run Code Online (Sandbox Code Playgroud)
为什么在情况 2 中,for
下一行不允许使用左大括号,但在情况 3 中允许?
icz*_*cza 12
简而言之,当你有这个时:
for ; i < 3; i++
Run Code Online (Sandbox Code Playgroud)
分号会自动插入,导致语法错误。
当输入被分解为标记时,如果该标记是
因此,在第 2 种情况下,词法分析器将自动在行尾插入分号,分号存在时将“呈现”语法错误的代码。
未在情形3时,有仅for
在一条线上,没有分号插入(按照以上引用的规则,分号仅在插入之后break
,continue
,fallthrough
和return
关键字)。所以在案例 3 中,代码不会用分号扩展,并且在语法上保持正确。
有关更多详细信息,请参阅如何在 Golang 中中断一长行代码?
归档时间: |
|
查看次数: |
161 次 |
最近记录: |