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

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

Patricia Arquette
Patricia Arquette原创
2024-11-02 19:17:02903浏览

Why am I getting the

else 之前有意外的分号或换行符

if 中 else 关键字之前有分号或换行符时,会出现错误“unexpected semicolon or newline before else” -else 语句。在提供的代码中,错误位于第 21 行:

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    }
    else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}

在这种情况下,if 块的右大括号后面有一个换行符,这导致了错误。要修复此错误,else if 语句应与右大括号放在同一行:

for err == nil{
    subject, predicate, object := parseTriple(line)
    if subject == current_mid{
        current_topic[predicate] = append(current_topic[predicate], object)
    } else if len(current_mid) > 0{
        processTopic(current_mid, current_topic, xmlFile)
        current_topic = make(map[string][]string)
    }
    current_mid = subject
    line, err = r.ReadString('\n')
}

说明:

在 Go 中,分号用于终止语句。但是,Go 还会自动在某些行的末尾插入分号,包括以右大括号 } 结尾的行。这意味着如果你有一个跨多行的 if 块,你必须将 else 语句与右大括号放在同一行,否则 Go 将在右大括号后面插入分号并导致语法错误。

第 28 行和第 32 行的错误消息(“函数体之外的非声明语句”)也是由第 21 行的错误引起的。第 21 行的右大括号没有正确终止,因此 Go 正在处理它后面的行就好像它们在主函数之外一样。要修复这些错误,您必须首先修复第 21 行的错误。

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

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