Go中变量的声明与作用范围

之前写过这样一段代码:

var i int 
for {
  i := AddOne(i)
  if i > 10 {
    break
  }
}

此for循环不能退出

:=(即var简写)符号可声明新变量,若它出现在某个代码块(使用{}修饰)内,则它影响了块内自声明处以下的所有代码,而块外的同名变量将不会被影响。这里与Java的明显区别是Java中无法在一个方法内声明一个新的重名变量

上面这段代码未按预期运行就是因为for代码块内的i是新声明的,这样外层的i从来没有被写入和修改,用其来进行判断也是行不通的,如果希望上面的代码生效可将子块中的i用=赋值

你可能感兴趣的:(Go中变量的声明与作用范围)