提供if语句发出的函数返回

sSm*_*cKk 1 if-statement return go

我在从golang的if语句中返回函数的预期return语句时遇到麻烦。

我提供了以下代码:

package main

import (
    "fmt"
)

func random() string {
    var x = "return"

    if x == "return" {
        return x
    }
}
func main() {
    fmt.Println(random())
}
Run Code Online (Sandbox Code Playgroud)

我的主要功能不应该打印出随机函数返回的字符串值吗?

go.go:13: missing return at end of function
Run Code Online (Sandbox Code Playgroud)

有人知道如何实现这一目标吗?

nvc*_*nvn 8

在 Go 1.1 中,你不需要一直在函数末尾添加 return,但是你需要一个Termination statement,这段代码应该可以工作: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())
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅:


sir*_*nga 6

return即使函数从未返回值,您也必须在末尾添加一个:

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

func random() string {
    var x = "return"

    if x == "return" {
        return x
    }
    return ""
}
func main() {
    fmt.Println(random())
}
Run Code Online (Sandbox Code Playgroud)

  • 通常,您会在末尾加一个“ panic(” should never never“”)恐慌。编译器也允许这样做,并且可以作为健全性检查使用。 (4认同)
  • 这是 Go 编译器最愚蠢的行为之一,事实上未使用的变量和导入是错误而不是警告。你需要做编译器希望你做的事情,而不是你需要做的事情,你知道! (2认同)