清水泥沙

golang基础(21.循环语句)

基本使用

与其它编程语言不同的是,Go 语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构。关键字 for 的基本使用方法与 PHP 类似,只是循环条件不含括号,比如我们要计算 1 到 100 之间所有数字之后,可以这么做:

package main

import "fmt"

func main() {
	sum := 0
	for i := 0; i <= 100; i++ {
		sum += i
	}
	fmt.Println(sum) // 输出5050
}

无限循环

go不支持while和do-while语句,如果需要无限循环,可以通过不带条件的for语句实现:

package main

import "fmt"

func main() {
	sum := 0
	i := 0
	for {
		i++
		if i > 100 {
			break
		}
		sum += i
	}

	fmt.Println(sum) // 输出5050
}

可以看到,我们可以通过 break 语句来中断无限循环

for-range 结构

另外,对于可迭代的集合(数组、切片、字典),Go 语言还支持通过 for-range 结构对其进行循环遍历,关于这个循环结构的使用我们前面已经演示过,比如我们要遍历上面的切片 a,可以这么做:

package main

import "fmt"

func main() {
	a := [3]int{1, 2, 3}

	for k, v := range a {
		fmt.Println(k, v)
	}
}
`for rang`可以取出索引以及对应的值

条件循环

我们可以基于条件判断进行循环,只有满足指定条件才会执行循环中代码。

package main

import "fmt"

func main() {
	sum := 0
	for i := 0; i <= 100; i++ {
		sum += i
	}
	fmt.Println(sum)
}

跳出循环

go中允许使用continue和break来控制循环,其中break可以选择跳出的循环

package main

import "fmt"

func main() {
	JLoop:
	for i := 0; i <= 100; i++ {
		if i == 5 {
			fmt.Println("continue 跳出")
			continue
		}
		for j := 0; j <= 100; j++ {
			if i > 5 {
				break JLoop
			}
		}
	}
}

注意事项

综上,在 Go 语言中使用循环语句时,需要注意以下几点:

  • 和条件语句、分支语句一样,左花括号 { 必须与 for 处于同一行;
  • 不支持 whie 和 do-while 结构的循环语句;
  • 可以通过 for-range 结构对可迭代集合进行遍历;
  • 支持基于条件判断进行循环迭代;
  • 与 PHP 一样,都允许在循环条件中定义和初始化变量,且支持多重赋值;
  • Go 语言的 for 循环同样支持 continue 和 break 来控制循环,但是它提供了一个更高级的 break,可以选择中断哪一个循环。