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中文网其他相关文章!