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)
	}
}

  

posted @ 2022-09-08 10:11  那就凑个整吧  阅读(130)  评论(0编辑  收藏  举报