gpt4 book ai didi

go - "for true {}"发生 "missing return at end of function"

转载 作者:数据小太阳 更新时间:2023-10-29 03:46:48 25 4
gpt4 key购买 nike

请看下面两个代码片段:
代码1:

func getIntJ1() (j int32) {
for {
j = 20
return
}
}

代码2:

func getIntJ2() (j int32) {
for true {
j = 20
return
}
}

Playground :https://play.golang.org/p/ZnwjZDksZhu

我认为他们应该在控制台中打印相同的值 20,但他们不能执行我想要的操作。
code1 可以在控制台打印值 20,但是 code2 出现编译错误:missing return at end of function

它们在函数中都有一个无限循环,为什么它们显示的结果不同?

最佳答案

为了防止函数在没有返回返回值的情况下运行到最后,Go 有一个概念 terminating statement .终止语句是某些类型的语句,可以很容易地表明执行不会继续超过该语句。带有结果参数的函数必须以终止语句结束。

没有 break 且没有循环条件的 for 算作终止语句,但带有循环条件的 for 不算,即使该循环条件始终为真。 (规则可以扩展为将 fortrue 作为终止语句的条件,但是添加太多情况会使定义更加困惑而不是有用。)你的第二个getIntJ 定义没有终止语句。

关于go - "for true {}"发生 "missing return at end of function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53368326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com