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

之前写过这样一段代码:

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

此for循环不能退出

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容