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中文網其他相關文章!