首頁 >後端開發 >Golang >為什麼我的 Go 程式碼中會出現「在 else 之前出現意外的分號或換行符號」錯誤?

為什麼我的 Go 程式碼中會出現「在 else 之前出現意外的分號或換行符號」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-11-02 19:17:02973瀏覽

Why am I getting the

else 之前有意外的分號或換行符

if 中else 關鍵字之前有分號或換行符時,會出現錯誤「unexpected semicolon or newline before else” -else 語句。在提供的程式碼中,錯誤位於第 21 行:

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    }
    else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}

在這種情況下,if 區塊的右大括號後面有一個換行符,這導致了錯誤。要修正此錯誤,else if 語句應與右大括號放在同一行:

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    } else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}

說明:

在 Go 中,分號用於終止語句。但是,Go 也會自動在某些行的末尾插入分號,包括以右大括號 } 結尾的行。這意味著如果你有一個跨多行的 if 區塊,你必須將 else 語句與右大括號放在同一行,否則 Go 會在右大括號後面插入分號並導致語法錯誤。

第 28 行和第 32 行的錯誤訊息(「函數體之外的非宣告語句」)也是由第 21 行的錯誤所引起的。第 21 行的右大括號沒有正確終止,因此 Go 正在處理它後面的行就好像它們在主函數之外一樣。要修復這些錯誤,您必須先修復第 21 行的錯誤。

以上是為什麼我的 Go 程式碼中會出現「在 else 之前出現意外的分號或換行符號」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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