go之for循环
循环介绍
在go中,只有for循环,没有其他循环关键字,没有while循环,也没有do while
通过for循环是可以实现 类似于while的功能
语法
for 变量初始化;条件;自增{ 循环体的内容 }
重点记忆:for关键字后三段,都可以省略不写
break和continue的使用方法和python的一样
for循环使用
基本使用,打印0-9,变量定义需要简略声明方式
package main import "fmt" func main() { for i := 0; i < 10; i++ { fmt.Println(i) } }
省略第一部分,和上面的区别在于i的作用域范围不一样,这个i在for外包还有效
package main import "fmt" func main() { i := 0 //var i =0 //var i int = 0 for ; i < 10; i++ { // 第一个分号必须写 fmt.Println(i) } }
省略第三部分
package main import "fmt" func main() { for i := 0; i < 10; { // 分号必须写 fmt.Println(i) i++ } }
省略第一部分和第三部分
这就是while循环
package main import "fmt" func main() { i := 0 //for ;i < 10; { // 分号可以不写 for i < 10 { // 分号可以不写 fmt.Println(i) i++ } }
三部分全部省略
死循环,等同于 for true{}
package main import "fmt" func main() { for ; ; { fmt.Println("hello world") } }
range关键字
上面的for循环都是基于索引的循环,python中没有基于索引的循环,python中都是基于迭代的循环,python中的for循环,都是可迭代对象。
go中基于索引的和基于迭代的
基于迭代一般用法
package main import "fmt" func main() { var a [3]int=[3]int{4,5,6} for i:=0;i<len(a);i++{ // 基于索引 fmt.Println(a[i]) } }
使用range关键字
package main import "fmt" func main() { var a [3]int=[3]int{4,5,6} for i,v:=range a{ //range 在go中是关键字 fmt.Println(i,v) } } //结果 //0 4 //1 5 //2 6
如果只想要值
package main import "fmt" func main() { var a [3]int=[3]int{4,5,6} for _,v:=range a{ //range 在go中是关键字 fmt.Println(v) } }