Navigation
阅读进度0%
No headings found.

Go 循环控制:for、range、break 与 continue

December 19, 2024 (1y ago)

Go
Loop
ControlFlow

本章概述

本章内容概述如下

  1. for循环
  2. range 对string,Array,slice ,map进行遍历
  3. 循环且套(求质数)
  4. 乘法表
  5. break(全部终止) 和continue(终止本次循环)

for循环

// 1.写法1
func forSmipte () {
	// for 有三种范式 初始值,条件 ,赋值  程序
	// for in; conditons; post {}
	// for condition { }
	// for { }
 
	// 执行顺序分析 ,先对in赋值 ===> 看条件 ===> 执行循环 ==> 赋值  
    //  ===>  看条件 ===> 执行循环 ==> 赋值
 
	sum := 0
	for i := 0; i <= 10; i++ {
		sum += i
	}
	fmt.Println(sum)
}
 
// 2. 写法2
func forSmipte2 () {
	// 范式2 int post可选 ,类似于while
	sum := 1
	for sum <= 10 {
		sum += sum
    }
    fmt.Println(sum)
}

range 对string,Array,slice ,map进行遍历

// 最常见的操作 这种格式的循环可以对字符串、数组、切片等进行迭代输出元素。
func forSmipte3 () {  
	// For-each range 循环
  strings := []string{"google", "runoob"}  // 形成了一个数组,内容是string  ====> ["google", "runoob"]
	
	fmt.Println(strings)
 
	for i, s := range strings {
		fmt.Println(i, s)
	}
 
 
	numbers := [6]int{1, 2, 3, 5}  // =====>  [1,2,3,5,0,0] 
	
	fmt.Println(numbers)
	for i,x:= range numbers {
		fmt.Printf("%d 位 x 的值 = %d\n", i,x)
	}  
}

如何进行无限循环

func forSmipte4 () {
// 	for {
// 		sum++ // 无限循环下去 bug代码
// }
}

循环且套(求质数)

 
func  Qiantao()  {
	// 循环嵌套的范式
	// 	for [condition |  ( init; condition; increment ) | Range]
	// {
	//    for [condition |  ( init; condition; increment ) | Range]
	//    {
	//       statement(s);
	//    }
	//    statement(s);
	// }
 
    // 求质数
    var i,j int
    for i = 2; i < 100;i++ {
        for j = 2; j <= (i/j); j++ {
            if( i%j == 0 ){
                break  // 发现了因子,就不是素数 跳出  
            }
        }
        if( j > (i%j) ) {
            fmt.Printf("%d 是素数 \n",i)
        }
    }
}

乘法表

func jiujiu()  {
	var i,j int
	
	for i = 1; i < 10; i++ {	
		for j = 1; j <= i; j++ {
			fmt.Printf("%dx%d=%d ",j,i,j*i)
		}
		fmt.Println("")
	}
}

break(全部终止) 和continue(终止本次循环)

  1. break
 
// 不使用标记的break 打断跳出全部
func  breakDaduan()  {
	for i :=1; i <= 3; i ++ {
		for i2 :=11; i2 <= 13; i2 ++ {
			fmt.Printf("i2: %d\n",i2)
			break
		}
	}
}
 
// 使用标记brak 
func  breakDaduanD()  {
	re:for i :=1; i <= 3; i ++ {
		for i2 :=11; i2 <= 13; i2 ++ {
			fmt.Printf("i2: %d\n",i2)
			break re
		}
	}
}
  1. continue
// continue 跳出当前循环,它也有跳出某个循环的特征语法
// 	跳过当前循环的剩余语句,然后继续进行下一轮循环。
func Continue(){
	for i := 1; i <= 3; i++ {
		for i2 :=1; i2 <= 13; i2++ {
			if(i2 == 6){
				continue
			}
			fmt.Printf("i2: %d\n",i2)
		}
	}
}
 
// 建议不要到处使用goto要不然你就凉凉了!
func GotoExample(){
	var a int =10
	
	Loop:for a < 20 {
		if( a == 15 ) {
			a = a +1
			goto Loop
		}	
		fmt.Printf("value a := %d\n",a)
		a++
	}
}