golang的这个正确的写法是什么?

失败的原因在于,Go编译器无法找到终止该函数的 return 语句。编译失败的案例如下:

func example(x int) int {
    if x == 0 {
        return 5
    } else {
        return x
    }
}
阅读 4.7k
7 个回答

golang 1.4 版本的bug,最新1.7,更新吧。

1.4 可以写成:

func example(x int) int {
    if x == 0 {
        return 5
    } 
    return x
}
go version go1.7 windows/amd64

运行过上段代码,没有任何毛病。

这段代码没任何问题啊。建议把全部代码贴出来看看。

我感觉应该不是这一块的问题,应该是在其他的模块把。你仔细看一下报错信息。

go 不支持这种写法。最终的return语句不能包含在if ... else ... 结构中,会编译失败

Effective Go里说了:
In the Go libraries, you'll find that when an if statement doesn't flow into the next statement—that is, the body ends in break, continue, goto, or return—the unnecessary else is omitted.

    f, err := os.Open(name, os.O_RDONLY, 0)
    if err!=nil {
        return err 
    }
    codeUsing(f)

也就是说当你if完了之后状态不会再有改变,不会有其他情况发生的时候,else应该被省略。

所以去掉else吧,因为编译器它看来你需要有一个default return。
改好之后是这样:

func example(x int) int {
    if x == 0 {
        return 5
    }
    return x
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题