首页  >  文章  >  后端开发  >  为什么函数外部的分号和语句会导致我的 Go 代码出错?

为什么函数外部的分号和语句会导致我的 Go 代码出错?

Susan Sarandon
Susan Sarandon原创
2024-11-02 21:28:30603浏览

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

未解决的语法错误:检查“意外分号”和“非声明语句”问题

在提供的代码中,您遇到几个错误,特别是第 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
...

通过解决这些错误,您的代码现在应该可以成功编译。请记住以下规则,以避免将来出现类似问题:

  1. “else”和“else if”必须与其相应 if 块的右大括号在同一行声明。
  2. 非声明语句必须放在函数体内。

以上是为什么函数外部的分号和语句会导致我的 Go 代码出错?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn