Go语言入门(六)——循环语句

83 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

循环语句的三种形式

与C、java、python不同的是GO只存在for循环语句,但是Go的for循环语句也能够起到其他语言中while语句的作用 下面展示三种for循环的使用方式

常规for循环

for i:=初始值; i <= 终止值; i++ {
	//代码块
}

充当while的for循环

i:=初始值
for i < 结束值 {
	// 代码块
	// i向着结束值方向改变
}

for与range配合使用

需要注意的是for与range配合进行迭代时迭代的变量必须可迭代类型:数组或者字典

for idx, value range m { // m为可迭代的变量
	//代码块
}

for 循环示例

package main

import "fmt"

func main(){
	for i:=0; i < 10; i++ {
		fmt.Printf("i:%v\n", i)
	}
	fmt.Printf("\n")
	
	i:=0
	for i < 10 {
		fmt.Printf("i:%v\n", i)
		i++
	}
	
	var a = []int{1, 2, 3, 4, 5}
	for idx, value := range a {
		fmt.Printf("idx:%v, value:%v\n", idx, value)
	}
	
	mp:=make(map[int]string, 0)
	mp[0] = "hello"
	mp[1] = "world"
	for key, value := range mp {
		fmt.Printf("key:%v, value:%v\n", key, value)
	}
}

image.png

终止循环

break

如果在循环中直接写break则break退出的是break所在的循环;同时Go允许我们在进入某一层循环前定义一个标签,可以在break时指定标签使得可以直接退出标签指定的循环

示例

我们假定我们有两个循环,我们要在找到两循环和为10的情况下退出循环

直接break的情况

package main

import "fmt"

func main(){
	for i:=0; i < 10; i++ {
		for j:=0; j < 10; j++ {
			fmt.Printf("i:%v, j:%v, sum:%v\n", i, j, i + j)
			if i + j >= 10{
				break
			}
		}
	}
}

image.png 从运行结果来看并没有达到我们的要求,因为单独使用break只能退出当前break所在的循环

带标签的break

package main

import "fmt"

func main(){	
	ENDLABEL:
	for i:=0; i < 10; i++ {
		for j:=0; j < 10; j++ {
			fmt.Printf("i:%v, j:%v, sum:%v\n", i, j, i + j)
			if i + j >= 10{
				break ENDLABEL
			}
		}
	}
	
}

image.png

continue

continue的基本定义和其他语言无异,与break一样,它也可以定义一个标签,直接continue标签下的循环