2 回答
TA贡献1790条经验 获得超9个赞
为了防止函数在不返回其返回值的情况下运行结束,Go 有一个终止语句的概念。终止语句是某些类型的语句,可以很容易地表明执行不会继续超过该语句。带有结果参数的函数必须以终止语句结束。
没有和for
没有break
循环条件算作终止语句,但有for
循环条件不算,即使该循环条件始终为真。(规则可以扩展为将for
withtrue
作为终止语句的条件,但是添加太多情况会使定义更加混乱而不是有用。)您的第二个getIntJ
定义没有终止语句。
TA贡献1719条经验 获得超6个赞
按照说明插入退货。
package main
import (
"fmt"
)
func main() {
fmt.Println(getIntJ1())
fmt.Println(getIntJ2())
}
func getIntJ1() (j int32) {
for {
j = 20
if j == 21 {
continue
}
return
}
}
func getIntJ2() (j int32) {
for true {
j = 20
if j == 21 {
continue
}
return
}
return
}
游乐场:https://play.golang.org/p/QbYQ6NkOMpQ
输出:
20
20
对于getIntJ1, for {},return永远不需要。对于getIntJ2, for condition {},return可能需要。condition编译器在什么时候可以更聪明true
for {}写比写更惯用for true {}。
- 2 回答
- 0 关注
- 112 浏览
添加回答
举报