从 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如何