Go by Example-循环

Go By Example-循环语句

Go和其他大多数语言不太一样,没有While和Do-Whiile形式的循环,只有一个for,来实现循环。

基本结构

for循环的基本结构是这个样子

	for 变量;条件;增量{内容}

首先,区别于其他语言for循环的{}前面的部分,没有括号。
然后{}里必须写内容,不能为空。;之间的内容,可以随意省略
通常写法,一个完整的for循环

	for a:=0;a<5;a++{
		fmt.Println(a)
	}

第一部分是一个赋值的操作,第二部分是一个判断条件,第三部分是一个增量的设定。
Go的for循环比较灵活
我们也可以只写第一部分

	for i := 1; ; {
		fmt.Printf("i=%d
",i)
		if i > 10 {
			break
		}

		i++
	}

如果只写第一部分,判断条件和增量设定就要在循环过程设置了,比如这里使用了if条件。

或者只写第二部分

	var j int =1
	for ; j<5; {
		fmt.Printf("j=%d
",j)
		j++

	}

当然也可以只写第三部分

	var k int =1
	for ; ;k++ {
		if k>5{
			break
		}
		fmt.Printf("k=%d
",k)


	}

或者你干脆什么都不写

	for ;;{
		fmt.Println("无限循环")
		break
	}
	//全省略,一般简写为下面形式
	for{
		fmt.Println("无限循环")
		break
	}

因为Go中没有where语句,如果想实现一个无限循环,我们就可以使用这种情况

综合示例

package main

import "fmt"

func main() {
  i:=1
  for i<=3{
  	fmt.Println(i)
  	i++
  }
  for{
  	fmt.Println("无限循环")
  	break
  }

  here:
  for {
  	  fmt.Println("想不到吧")
	  for j:=0;j<3 ;j++  {
		  break here
	  }
  }
  fmt.Println("通过break添加标签here,跳出双重循环")
}

观察发现你会看到break后面跟了一个here,而这个here在for循环之前出现过一次。
这里的here可以是任何的非Go语言关键字,起到一个类似goto的作用,但是它和goto还不一样。
关于for循环大概可以总结为下面三点
1.break的标签必须在最外层for循环的前面。
2.break的标签执行之后,会继续for循环后面的代码,不会再重新进入循环。
3.break加标签用法,在嵌套的循环中使用。

原文地址:https://www.cnblogs.com/c-x-a/p/11474921.html