我有以下功能:
func fitrange(a, x, b int) int {
if a > b {
a, b = b, a
}
switch true {
case x < a:
return a
case x > b:
return b
default:
return x
}
}
go编译器抱怨&#34;函数在没有return语句的情况下结束&#34;即使switch
语句中的每个可能路径都返回一个值。除了在函数末尾添加一个虚拟return
语句之外,还有什么方法可以解决这个问题吗?
答案 0 :(得分:10)
一起删除default
个案,并在切换后删除return x
。
像:
func fitrange(a, x, b int) int {
if a > b {
a, b = b, a
}
switch true {
case x < a:
return a
case x > b:
return b
}
return x
}
答案 1 :(得分:7)
您可以通过添加恐慌来安抚编译器,而不是在最后添加返回。这不是一个坏主意,因为如果你的代码包含一个bug并且达到了“无法访问”的行,那么你的程序将会立即停止而不是向前推进可能错误的答案。