Golang中的if/else无法编译

6

我想不出为什么这段代码无法编译。 它显示函数没有返回语句,但是当我在else后添加了一个return时,它仍无法编译。

func (d Foo) primaryOptions() []string{

if(d.Line == 1){
    return []string{"me", "my"}
}
else{
    return []string{"mee", "myy"}
}
}
1个回答

9

Go 语言通过 "自动分号插入" 规则,强制 elseif 大括号在同一行。

因此必须写成这样:

if(d.Line == 1) {
    return []string{"me", "my"}
} else { // <---------------------- this must be up here
    return []string{"mee", "myy"}
}

否则,编译器会为您插入分号:
if(d.Line == 1) {
    return []string{"me", "my"}
}; // <---------------------------the compiler does this automatically if you put it below
else {
    return []string{"mee", "myy"}
}

因此出现了你的错误。 我将很快链接到相关文档。
编辑:Effective Go有关于此的信息

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接