从 if 语句问题提供函数返回

Posted

技术标签:

【中文标题】从 if 语句问题提供函数返回【英文标题】:Provide function return from an if statement issues 【发布时间】:2013-12-04 15:14:02 【问题描述】:

我在从 golang 的 if 语句中返回函数的预期返回语句时遇到问题。

我提供了以下代码:

package main

import (
    "fmt"
)

func random() string 
    var x = "return"

    if x == "return" 
        return x
    

func main() 
    fmt.Println(random())

main函数不应该打印出随机函数返回的字符串值吗?我得到的只是

go.go:13: missing return at end of function

有人知道如何做到这一点吗?

【问题讨论】:

【参考方案1】:

如果函数返回一个值,你必须在最后包含一个return,即使它从未使用过:

http://play.golang.org/p/XFsPL2G15R

func random() string 
    var x = "return"

    if x == "return" 
        return x
    
    return ""

func main() 
    fmt.Println(random())

【讨论】:

通常你会在最后加上panic("should never happen")。编译器也允许这样做,并兼作健全性检查。 这是 Go 编译器最愚蠢的行为之一,而且未使用的变量和导入是错误而不是警告。你需要做编译器想让你做的事情,而不是你需要做的事情,你知道的!【参考方案2】:

在 Go 1.1 中,你不需要一直在函数末尾添加 return,但你需要一个 终止语句,这段代码应该可以工作: http://play.golang.org/p/fNiijqNHbt

func random() string 
    var x = "return"

    if x == "return" 
        return x
     else 
        return "else"
    

func main() 
    fmt.Println(random())

有关详细信息,请参阅:

http://golang.org/doc/go1.1#return http://golang.org/ref/spec#Terminating_statements

【讨论】:

以上是关于从 if 语句问题提供函数返回的主要内容,如果未能解决你的问题,请参考以下文章

从 Javascript 中的 if 语句执行 DOM 的问题

关于javascript函数中if语句的问题 - if语句返回true但函数返回false如何

带有 IF 语句的向量函数的 MATLAB 返回

布尔函数:if 语句或简单返回

为啥我的函数 if/else if/else if 语句返回相同的答案?

if语句中的php返回语句