Go 中 Else 之前意外的分号:详细解释
你的 Go 代码在第 21 行遇到异常错误:“syntax error:unexpected其他之前的分号或换行符。”尽管你这么说,但仔细检查发现,这一行的“else”语句之前确实有一个分号(;)。
这里的核心问题源于Go的自动分号插入规则。通常,Go 中分号是可选的;但是,编译器会自动将它们插入到某些行的末尾以保持语法完整性。一种这样的情况是当一行以右大括号“}”结束时,例如第 21 行上的“if”语句结束。
此行为对后续的“else”语句造成了障碍。在 Go 中,“else”块应与“if”语句的右大括号写在同一行。因此,编译器无法在第 21 行末尾添加分号,因为它会创建两个单独的语句,这是不正确的语法。
要解决此问题,请将“else”关键字直接放在右大括号之后第 21 行:
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)
}
此修改确保“if”和“else”语句形成单个复合语句,按照 Go 语法的要求。
关于第 28 行和第 32 行的错误,它们与“main”函数范围之外的语句。在 Go 中,语句必须包含在它们所属的函数体内。要修复这些错误,请将大括号“}”内的语句包含在“main”函数体内。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3