zoukankan      html  css  js  c++  java
  • 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加标签用法,在嵌套的循环中使用。

  • 相关阅读:
    opencv学习之米粒分割 #201906121549
    opencv学习之hsv通道分解 #201906101704
    opencv学习之图像滤波预处理 #201906101646
    opencv学习之addWeighted图片打水印 #201906061030
    alpha channel
    rm git commit history
    git 使用学习
    排序算法的c++实现
    leetcode 246 中心对称数问题
    大数打印问题
  • 原文地址:https://www.cnblogs.com/c-x-a/p/11474921.html
Copyright © 2011-2022 走看看