GO每日一题(6)


下面这段代码会输出什么

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)
}

这个题目主要考察变量作用于问题。你做对了吗?


文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
  目录