下面这段代码会输出什么
func test(i int) (ret int) {
ret = i * 2
if ret > 10 {
ret := 10
return
}
return
}
func main() {
result := test(10)
fmt.Println(result)
}
答案
编译错误
分析
ret :=10
这行代码编译失败
具体原因是因为这一行代码重新定义了一个变量ret,但是没有用到。这里的ret跟返回值不一样,是2个变量,go中定义的变量如果没有用到则编译失败。如果把ret返回则编译成功。
func test(i int) (ret int) {
ret = i * 2
if ret > 10 {
ret := 10
return ret
}
return
}
func main() {
result := test(10)
fmt.Println(result)
}
这个题目主要考察变量作用于问题。你做对了吗?