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