之前写过这样一段代码:
var i int
for {
i := AddOne(i)
if i > 10 {
break
}
}
此for循环不能退出
:=
(即var简写)符号可声明新变量,若它出现在某个代码块(使用{}
修饰)内,则它影响了块内自声明处以下的所有代码,而块外的同名变量将不会被影响。这里与Java的明显区别是Java中无法在一个方法内声明一个新的重名变量
上面这段代码未按预期运行就是因为for代码块内的i是新声明的,这样外层的i从来没有被写入和修改,用其来进行判断也是行不通的,如果希望上面的代码生效可将子块中的i用=
赋值
网友评论