未解决的语法错误:检查“意外分号”和“非声明语句”问题
在提供的代码中,您遇到几个错误,特别是第 21、28 和 32 行。让我们深入研究每个错误及其解决方案:
第 21 行错误:“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 ...
通过解决这些错误,您的代码现在应该可以成功编译。请记住以下规则,以避免将来出现类似问题:
以上是为什么函数外部的分号和语句会导致我的 Go 代码出错?的详细内容。更多信息请关注PHP中文网其他相关文章!