gpt4 book ai didi

for-loop - 在Go for循环中打开大括号的语法规则

转载 作者:行者123 更新时间:2023-12-01 21:15:42 29 4
gpt4 key购买 nike

情况1
该程序编译成功:

package main

import (
"fmt"
)

func main() {
i := 0
for ; i < 3; i++ {
fmt.Println(i)
}
}
情况二
但这不是:
package main

import (
"fmt"
)

func main() {
i := 0
for ; i < 3; i++
{
fmt.Println(i)
}
}
这导致错误:
./prog.go:9:18: syntax error: unexpected newline, expecting { after for clause
情况3
但这可以成功编译:
package main

import (
"fmt"
)

func main() {
i := 0
for
{
fmt.Println(i)
}
}
问题
为什么在情况2中,下一行不允许 for的大括号,而在情况3中,为什么允许?

最佳答案

简而言之,当您符合以下条件时:

for ; i < 3; i++
分号将自动插入,导致语法错误。
Spec: Semicolons:

When the input is broken into tokens, a semicolon is automatically inserted into the token stream immediately after a line's final token if that token is


因此,在 情况2 中,词法分析器将自动在行的末尾插入一个分号,当该分号出现时将在语法上“呈现”代码。
不在 中情况3 ,当一行中只有一个 for时,没有插入分号(按照上面引用的规则,仅在 breakcontinuefallthroughreturn关键字之后插入分号)。因此,在 情况3 中,该代码不会使用分号扩展,并且在语法上仍然正确。
有关更多详细信息,请参见 How to break a long line of code in Golang?

关于for-loop - 在Go for循环中打开大括号的语法规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63141032/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com