【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

这篇具有很好参考价值的文章主要介绍了【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

Go系列文章:

  1. GO开篇:手握Java走进Golang的世界
  2. 2 Go开发环境搭建、Hello World程序运行
  3. 3 Go编程规约和API包
  4. 4 Go的变量、常量、运算符
  5. 5 Go 基本数据类型
  6. 6 Go 复杂数据类型之指针
  7. 7 Go流程控制之分支结构if、switch

Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html

二、for循环

for 循环是一个循环控制结构,可以指定循环执行的次数
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

1、语法

Go的for循环有三种方式,仅有一种方式需要像Java一样使用分号。

1)和Java的for循环一样

for init; condition; post { }
  • init: 给控制变量赋初值,一般为:赋值表达式;
  • condition: 循环控制条件,一般为:关系表达式或逻辑表达式;
  • post: 给控制变量增量或减量,一般为:赋值表达式。

示例:计算1 到 100 的数字之和:

package main

import "fmt"

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

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

2)和Java的while一样

for condition { }

init和post参数是可选的,针对上面的实例,我们可以省略它俩,这样的for循环语句就类似于while循环。

示例:当sum 小于 100事,计算sum自加的结果

package main

import "fmt"

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

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

3)和Java的for(;;)一样

无限循环,也等价于while(true);

for { }

示例:

package main

import "fmt"

func main() {
	sum := 0
	// 无限循环下去
	for {
		sum++
	}
	// 永远执行不到这条语句
	fmt.Println(sum)
}

想要停止无限循环,在命令窗口按下ctrl + c 。

2、for语句执行过程

  1. 先执行赋值表达式,对变量赋初始化值;
  2. 执行condition表达式,判断赋值表达式init中的变量是否符合条件;
    • 符合循环条件,这执行循环体内的语句;然后执行post表达式,进入第二次循环。在判断condition。
    • 不符合循环条件,终止for循环,执行循环体之外的go语句。

三、for range

for range结构是Go语言特有的一种迭代结构,可以遍历数组、切片、字符串、map、通道,语法上类似于Java中的 foreach 语句。

1、语法

Go的for range循环有两种方式;

1)遍历key、value

for key, value := range coll {
    .....
} 

示例:遍历字符串、数组

package main

import "fmt"

func main() {
	// 遍历字符串
	str := "Hello World"
	for i, value := range str {
		fmt.Printf("第 %d 位 char 的值 = %c\n", i, value)

	}

	// 遍历数组
	numbers := [6]int{1, 2, 3, 5}
	for i, num:= range numbers {
		fmt.Printf("第 %d 位 num 的值 = %d\n", i, num)
	}
}

控制台输出:

【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

只遍历value

只遍历value 和 遍历 key/value的唯一区别在于用标识符_接收key。

for _, value := range coll {
    .....
} 

示例:遍历字符串

package main

import "fmt"

func main() {
	// 遍历字符串的char值
	str := "Hello World"
	for _, value := range str {
		fmt.Printf("各位的 char值 = %c\n", value)

	}
}

2)遍历key

遍历key仅需要接收key,不需要使用标识符_接收value。语法如下:

for key := range coll {
    .....
} 

示例:遍历数组值

package main

import "fmt"

func main() {
	// 遍历数组中的值
	numbers := [4]int{1, 2, 3, 5}
	for num:= range numbers {
		fmt.Println(num)
	}
}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

四、关键字

Go流程控制中常用的关键字有四个:break、continue、goto、return

1、break

break用于立即中断for循环。

示例:

package main

import "fmt"

func main() {
	sum := 0
	for i := 1; i <= 100; i ++ {
		sum += i
		if sum > 100 {
			fmt.Println("即将退出循环")
			break
		}
	}
	fmt.Println(sum)
}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

1)双重/多层for循环中使用

双重for循环中,break只会影响到最近的for循环;

示例:

package main

import "fmt"

func main() {
	for i := 1; i <= 2; i++ {
		for j := i; j < 10; j++ {
			if j == 8  {
				fmt.Println("即将退出内层循环,开启下一个外层循环")
				break
			}
			fmt.Printf("i = %d, j = %d \n", i, j)
		}
	}
	fmt.Println("done")
}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

3)通过标签指定要结束的for循环

break也可以通过for循环定义的标签,控制break对哪个for循环生效。

示例:

package main

import "fmt"

func main() {
outerFor:
	for i := 1; i <= 2; i++ {
		for j := i; j < 10; j++ {
			if j == 8 {
				fmt.Println("即将退出外层循环")
				break outerFor
			}
			fmt.Printf("i = %d, j = %d \n", i, j)
		}
	}
	fmt.Println("done")
}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

2、continue

continue用于控制结束本次 循环体的代码逻辑,继续进行for循环中的下一次循环体。

示例:统计1-10的总和,但是不加8

package main

import "fmt"

func main() {
	sum := 0
	for i := 1; i <= 10; i++ {
		if i == 8 {
			fmt.Printf("sum总和不累加:%d \n", i)
			continue
		}
		sum += i
	}
	fmt.Println(sum)
}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

1)双重/多层for循环中使用

双重for循环中,continue只会影响到最近的for循环;

示例:

package main

import "fmt"

func main() {

	for i := 1; i <= 2; i++ {
		for j := i; j < 10; j++ {
			if j == 8 {
				fmt.Printf("即将跳过当前循环体, i = %d, j = %d \n", i, j)
				continue
			}
			fmt.Printf("i = %d, j = %d \n", i, j)
		}
	}
	fmt.Println("done")
}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

2)通过标签指定要continue的for循环

continue也可以通过for循环定义的标签,控制continue对哪个for循环生效。

示例:内层循环执行到j == 8时,continue外层循环,内存循环不再执行,这个和break一个效果;

package main

import "fmt"

func main() {
outerFor:
	for i := 1; i <= 2; i++ {
		for j := i; j < 10; j++ {
			if j == 8 {
				fmt.Printf("即将跳过当前循环体, i = %d, j = %d \n", i, j)
				continue outerFor
			}
			fmt.Printf("i = %d, j = %d \n", i, j)
		}
	}
	fmt.Println("done")
}

控制台输出:

【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

3、goto

Go语言中的的 goto 关键字可以无条件地让程序跳转到指定的行;通常 goto 关键字 与 条件语句一起使用,以实现条件转移能力。

然,在Go程序设计中不建议使用goto关键字,容易造成程序流程的混乱。

示例:

package main

import "fmt"

func main() {

	fmt.Println("Hello 1")
	fmt.Println("Hello 2")
	if 1 == 1 {
		goto label
	}

	fmt.Println("Hello 3")
	fmt.Println("Hello 4")
label:
	fmt.Println("Hello 5")
	fmt.Println("Hello 6")

}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

4、return

return关键字用于接收某一个函数;

示例:

package main

import "fmt"

func main() {

	for i := 1; i <=100; i ++ {
		fmt.Println(i)
		if i == 18 {
			return
		}
	}
	fmt.Println("done")
}

控制台输出:
【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

五、总结

go语言的for循环用于基本和Java一样;特殊注意continue / break 到指定for循环的用法。
go的for range可以理解为Java中的foreach。

对比Java来看

Go语言中,while(for true)、break、continue、return和Java中使用一样。

  • Java中的for后需要需要跟小括号(),Go中不需要;

Java中的for

for (int i = 1; i < 10; i++) {
....
}

Go中的for文章来源地址https://www.toymoban.com/news/detail-498478.html

for i := 1; i < 10; i++ {
....
}

到了这里,关于【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【30天熟悉Go语言】4 Go的变量、常量、运算符

    Go系列文章: GO开篇:手握Java走进Golang的世界 2 Go开发环境搭建、Hello World程序运行 3 Go编程规约和API包 Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html 变量相当于内存中一个数据存储空间的标识。 变量的使用分三步:声明、赋值、使用。 变量的声明 采用 var 变量名

    2024年02月07日
    浏览(45)
  • 【30天熟悉Go语言】3 怀着Java看Go的编程规约

    Go系列文章: GO开篇:手握Java走进Golang的世界 2 Go开发环境搭建、Hello World程序运行 Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html 1 源文件以 .go 结尾 2 程序的执行入口是main()函数 3 严格区分大小写 4 方法由一条条语句构成,每个语句后不需要加分号(GO会在每行后

    2024年02月06日
    浏览(45)
  • 【30天熟悉Go语言】2 Go开发环境搭建、Hello World程序运行

    Go系列文章: GO开篇:手握Java走进Golang的世界 Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html 1 进入到Go官网(https://golang.org),点击Download按钮; 2 选择操作系统对应的环境版本(图形化安装),进行下载,比如博主的windows: 3 下载完一路安装,博主的安装目录如下

    2024年02月06日
    浏览(54)
  • C++ While 和 For 循环:流程控制全解析

    使用 switch 语句选择要执行的多个代码块之一。 语法 它的工作原理如下: switch 表达式被评估一次 表达式的值与每个 case 的值进行比较 如果找到匹配项,则执行关联的代码块 break 和 default 是可选的 下面的示例使用星期几的数字来计算星期几的名称: 示例 当 C++ 遇到

    2024年04月08日
    浏览(61)
  • Python的流程控制语句,while循环和嵌套、for循环、break和continue、冒泡排序

    流程控制语句是用于控制程序的执行顺序的语句。在Python中,主要有while循环和嵌套、for循环、break和continue语句、冒泡排序等。 while循环和嵌套: while循环用于多次执行一段代码,直到条件不再满足为止。嵌套是将一个while循环放在另一个while循环内部,实现多层循环。 示例

    2024年01月18日
    浏览(100)
  • 掌握Go语言:Go语言类型转换,解锁高级用法,轻松驾驭复杂数据结构(30)

    在Go语言中,类型转换不仅仅局限于简单的基本类型之间的转换,还可以涉及到自定义类型、接口类型、指针类型等的转换。以下是Go语言类型转换的高级用法详解: Go语言类型转换的高级用法 1. 自定义类型之间的转换 在Go语言中,可以使用类型别名或自定义类型来创建新的

    2024年04月09日
    浏览(69)
  • 九、程序的流程结构(if分支语句,Switch分支,for循环)

    程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。 顺序结构:从上向下,逐行执行。 选择结构:条件满足,某些代码才会执行。0-1次 ​ 分支语句:if,switch,select 循环结构:条件满足,某些代码会被反复的执行多次。0-N次 ​ 循环语句:for 语法格式: 示

    2024年02月07日
    浏览(40)
  • 【JavaScript】JavaScript 程序流程控制 ⑥ ( while 循环概念 | while 循环语法结构 )

    在 JavaScript 中 , while 循环 是一种 \\\" 循环控制语句 \\\" , 使用该语句就可以 重复执行一段代码块 , 直到指定的 \\\" 条件表达式 \\\" 不再满足 , 如果 \\\" 条件表达式 \\\" 一开始就不满足 , 循环体 永远不会执行 ; while 循环语法结构如下 : 首先 , 执行 \\\" 条件表达式 \\\" , 在上述语法结构中 , \\\" 条件

    2024年04月15日
    浏览(41)
  • Go语言程序设计(十)选择结构和循环结构

    在Go语言中,共提供三种形式的if语句: if语句 if else语句 if else if语句 if语句的注意事项: 左大括号“{”必须和if语句放在同一行,否则编译会出错 条件表达式和if之间使用空格隔开即可,表达式无需用括号括起来 支持初始化条件表达式,如if a:=1; a0。在这条语句中,先

    2024年02月12日
    浏览(45)
  • 【Go编程语言】流程控制

    程序的流程控制结构一具有三种:顺序结构,选择结构,循环结构 顺序结构:从上到下,逐行执行。默认的逻辑 选择结构:条件满足某些代码才会执行 if switch select ,后面 channel 再讲 循环结构:条件满足某些代码会被反复执行0-N次 for 条件语句需要开发者通过指定一个或多个条

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包