登录
首页 >  Golang >  Go问答

函数结束时缺少返回,即使条件详尽

来源:stackoverflow

时间:2024-02-07 14:06:25 163浏览 收藏

从现在开始,努力学习吧!本文《函数结束时缺少返回,即使条件详尽》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

package main

import (
    "fmt"
)

func main() {
    fmt.Println(test(1, 2))
}

func test(a, b int) bool {
    if a == b {
        return true
    }
    if a > b {
        return true
    }
    if a < b {
        return false
    }
}

运行上面的代码我收到以下错误消息:

./main.go:21:1:函数末尾缺少返回

我的问题是在功能测试中,所有情况都是返回。为什么还需要在函数结束时返回。


正确答案


这是由语言规范(source)规定的:

terminating statement 定义为:

您的 if 语句没有 else 分支,因此您的函数体缺少终止语句,即使正在测试的条件可能很详尽。

您必须在函数体末尾添加显式 return,或者重写为 if-else(仅 else if 是不够的):

func test(a, b int) bool {
    // this is a terminating statement
    if a == b {
        return true
    } else if a > b {
        return true
    } else /* a < b */ {
        return false
    }
}

但是这种 if-greater-or 可以写成:

return a >= b

今天关于《函数结束时缺少返回,即使条件详尽》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>