内容简介:和 PHP 一样,Go 语言支持在循环语句中通过关于比如这里的
break 与 continue 语句
和 PHP 一样,Go 语言支持在循环语句中通过 break
语句跳出循环,通过 continue
语句进入下一个循环。
关于 break
的基本使用示例我们在上篇教程中已经演示过, break
的默认作用范围是该语句所在的最内部的循环体:
arr := [][]int{{1,2,3},{4,5,6},{7,8,9}} for i := 0; i < 3; i++ { for j := 0; j < 3; j++ { num := arr[i][j] if j > 1 { break } fmt.Println(num) } }
比如这里的 break
的含义是在 j > 1
时退出最内部的循环,否则打印当前位置的数字。
continue
则用于忽略剩余的循环体而直接进入下一次循环的过程:
arr := [][]int{{1,2,3},{4,5,6},{7,8,9}} for i := 0; i < 3; i++ { for j := 0; j < 3; j++ { num := arr[i][j] if j > 1 { break } else { continue } fmt.Println(num) } }
如果我们这样改写程序的话,上述代码不会打印任何值,因为 continue
语句会忽略后续代码直接进入下一个循环。
标签
Go 语言的 break 和 contine 与 PHP 的不同之处在于支持与标签结合跳转到指定的标签语句,从而改变这两个语句的默认跳转逻辑,标签语句通过 标签+「:」
进行声明:
arr := [][]int{{1,2,3},{4,5,6},{7,8,9}} ITERATOR1: for i := 0; i < 3; i++ { for j := 0; j < 3; j++ { num := arr[i][j] if j > 1 { break ITERATOR1 } fmt.Println(num) } }
这样一来,原本退出当前循环体的 break
语句现在改为跳转到 ITERATOR1
标签对应的位置,所以对应的打印结果是:
因为此时 break
会直接跳出外层循环,如果把 break
改成 continue
则打印结果如下:
因为此时 continue
和不使用标签的 break
一样,跳出当前的内层循环,直接进入下一个外层循环。
goto 语句
goto
语句被多数语言学者所反对,告诫大家不要使用,因为很容易造成代码逻辑混乱,容易导致不易发现的 bug。但 Go 语言仍然支持 goto
关键字, goto
语句的语义非常简单,就是跳转到本函数内的某个标签,如:
arr := [][]int{{1,2,3},{4,5,6},{7,8,9}} for i := 0; i < 3; i++ { for j := 0; j < 3; j++ { num := arr[i][j] if j > 1 { goto EXIT } fmt.Println(num) } EXIT: fmt.Println("Exit.")
当第一次满足 j > 1
的条件时,代码就会跳转到 EXIT
标签指定的位置,继续后续代码执行,所以上述代码的输出是:
1 2 Exit.
以上所述就是小编给大家介绍的《Go 语言函数式编程系列教程(十七) —— 流程控制篇:跳转语句》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Go36-21,22-panic函数、recover函数以及defer语句
- golang panic、recover函数以及defer语句(1)
- Go语言学习笔记03--流程控制循环语句与函数
- Go 语言函数式编程系列教程(十四) —— 流程控制篇:条件语句
- Go 语言函数式编程系列教程(十五) —— 流程控制篇:分支语句
- Go 语言函数式编程系列教程(十六) —— 流程控制篇:循环语句
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Coding the Matrix
Philip N. Klein / Newtonian Press / 2013-7-26 / $35.00
An engaging introduction to vectors and matrices and the algorithms that operate on them, intended for the student who knows how to program. Mathematical concepts and computational problems are motiva......一起来看看 《Coding the Matrix》 这本书的介绍吧!