亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go for循環中左大括號的語法規則

Go for循環中左大括號的語法規則

Go
慕標琳琳 2022-06-21 10:35:21
情況1該程序編譯成功:package mainimport (    "fmt")func main() {    i := 0    for ; i < 3; i++ {        fmt.Println(i)    }}案例2但這不會:package mainimport (    "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 mainimport (    "fmt")func main() {    i := 0    for    {        fmt.Println(i)    }}問題為什么在情況 2for中,下一行中不允許使用左括號,但在情況 3 中卻允許?
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

簡而言之,當你有這個時:

for ; i < 3; i++

會自動插入分號,導致語法錯誤。

規格:分號:

當輸入被分解為標記時,如果該標記是

因此,在案例 2中,詞法分析器將自動在行尾插入一個分號,當該分號出現時,將“呈現”語法不正確的代碼。

不是在情況 3中,當一行中只有 afor時,不插入分號(根據上面引用的規則,分號只插入在、 和break關鍵字continue之后)。所以在案例 3中,代碼不會用分號擴展,并且在語法上保持正確。fallthroughreturn


查看完整回答
反對 回復 2022-06-21
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

package main


import (

    "fmt"

)


func main() {

    i := 0

    for ; i < 3; i++{

        fmt.Println(i)

    }

}

工作它只是放入{一個新行會導致你得到的錯誤。


在案例 3 中,您沒有任何要評估的語句,因此新行不會導致 y 問題。


查看完整回答
反對 回復 2022-06-21
  • 2 回答
  • 0 關注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號