首页  >  文章  >  后端开发  >  为什么我在 Go 中收到“语法错误:Else 之前出现意外的分号”?

为什么我在 Go 中收到“语法错误:Else 之前出现意外的分号”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 01:04:29316浏览

Why Am I Getting

Go 中 Else 之前意外的分号:详细解释

你的 Go 代码在第 21 行遇到异常错误:“语法错误:意外”分号或换行符之前。”尽管你这么说,但仔细检查发现,这一行的“else”语句之前确实有一个分号(;)。

这里的核心问题源于 Go 的自动分号插入规则。通常,Go 中分号是可选的;但是,编译器会自动将它们插入到某些行的末尾以保持语法完整性。一种这样的情况是当一行以右大括号“}”结束时,例如第 21 行关闭“if”语句的行。

这种行为对后续的“else”语句造成了障碍。在 Go 中,“else”块应与“if”语句的右大括号写在同一行。因此,编译器无法在第 21 行末尾添加分号,因为它会创建两个单独的语句,这是不正确的语法。

要解决此问题,请将“else”关键字直接放在右大括号之后第 21 行:

<code class="go">if subject == current_mid {
    current_topic[predicate] = append(current_topic[predicate], object)
} else {
    processTopic(current_mid, current_topic, xmlFile)
    current_topic = make(map[string][]string)
}</code>

此修改确保“if”和“else”语句形成单个复合语句,按照 Go 语法的要求。

关于第 28 行和32,它们与“main”函数范围之外的语句相关。在 Go 中,语句必须包含在它们所属的函数体内。要修复这些错误,请将大括号“}”内的语句包含在“main”函数体内。

以上是为什么我在 Go 中收到“语法错误:Else 之前出现意外的分号”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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