首页  >  文章  >  后端开发  >  为什么我的 Go 代码中出现“语法错误:else 之前出现意外的分号或换行符”?

为什么我的 Go 代码中出现“语法错误:else 之前出现意外的分号或换行符”?

Linda Hamilton
Linda Hamilton原创
2024-11-02 12:40:02178浏览

Why am I Getting

不可预见的语法错误:Go 中“Else”之前出现意外的分号或换行符

Go 编译器报告一条神秘的错误消息:“语法错误” : else 之前出现意外的分号或换行符。”尽管对第 21 行进行了彻底检查,代码似乎没有任何令人讨厌的分号或换行符。

深入研究,我们在第 28 行和第 32 行发现了两个额外的令人费解的错误:“函数体之外的非声明语句”。这些语句驻留在 main() 函数中,并且应该不受终止函数的右大括号的影响。

证据表明上述错误源于第 21 行中的根本问题。Go 语言引入了一些独特的分号 -处理行为:

  • 分号会自动插入到包含特定标记的行尾,包括右大括号}。
  • 因此,在右大括号后面添加分号if 块。
  • 对于 if {...} else {...} 语句,此分号插入会产生语法错误,因为 else 子句中不允许使用分号。

要解决此问题,else 子句必须与 if 块的右大括号放在同一行。例如:

if len(current_mid) > 0 {
    processTopic(current_mid, current_topic, xmlFile)
} else {
    current_topic = make(map[string][]string)
}

“函数体之外的非声明语句”编译器错误是由于 Go 严格要求函数体之外的语句必须是声明而产生的。在第 28 行和第 32 行的情况下,表达式既不是声明也不是函数体的一部分,因此会出现错误消息。

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

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