首頁 >後端開發 >Golang >為什麼函數外部的分號和語句會導致我的 Go 程式碼出錯?

為什麼函數外部的分號和語句會導致我的 Go 程式碼出錯?

Susan Sarandon
Susan Sarandon原創
2024-11-02 21:28:30775瀏覽

Why Are Semicolons and Statements Outside Functions Causing Errors in My Go Code?

未解決的語法錯誤:檢查「意外分號」和「非聲明語句」問題

在提供的程式碼中,您遇到幾個錯誤,特別是第21、28 和32 行。讓我們深入研究每個錯誤並解決方法:

第21 行錯誤:Unexpected Semicolon or Newline Before "else"

出現此錯誤是因為Go 要求將關鍵字「else」放在與其對應的「if」或「else if」語句的右大括號在同一行。在您的程式碼中,「if」區塊在第 20 行以分號結束,這會自動插入換行符。因此,第 21 行的「else」語句成為一個單獨的語句,從而導致語法錯誤。

解:
將「else」關鍵字移到與「if」區塊的右大括號,如下所示:

...
        } else if len(current_mid) > 0 {
            processTopic(current_mid, current_topic, xmlFile)
            current_topic = make(map[string][]string)
        }
...

第28 行和32:函數體之外的非宣告語句

這些錯誤表明您在main() 函數體之外放置了語句(processTopic 呼叫)。在 Go 中,非宣告語句必須出現在函數體內。

解:
將processTopic 呼叫移回main() 函數體內,如下所示:

...
} else if len(current_mid) > 0 {
            processTopic(current_mid, current_topic, xmlFile)
            current_topic = make(map[string][]string)
        }
processTopic(current_mid, current_topic, xmlFile)  // Moved inside function body
...

透過解決這些錯誤,您的程式碼現在應該可以成功編譯。請記住以下規則,以避免將來出現類似問題:

  1. 「else」和「else if」必須與其對應 if 區塊的右大括號在同一行聲明。
  2. 非宣告語句必須放在函數體內。

以上是為什麼函數外部的分號和語句會導致我的 Go 程式碼出錯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn