Go语言在循环中panic后还能继续执行for循环?

Go语言在循环中panic后还能继续执行for循环?,第1张

如下的例子,要打印100以内能被5整除的数,以panic的方式选择出来并打印。

如果用下面的方搜烂式,执行到第一个panic就会跳出for循环

只能输出第一个匹配项,然后退出for循环。

那么如何保证在for循环处理完panic不退出循环,直到打印完所有满足条件的数值?

golang的panic被恢复后,能继续执行比recover更早的defer,或者返回到recover函数的调用方,然后继续执行下去。

所以,我们可以把panic和recover放到单独的函数中,然后在for循环里调用这个函数,这个函数panic并恢复后,能返回到调用方for循环并继续循环下去。

执行结果是所祥拆有0到100的所有符合panic条件的都能正确处理,for循环没有异常退出:

golang的panic属于非世宴漏常严重的错误,一旦panic没有recover的话,程序就退出了。一般避免主动panic,影响程序稳定性。

recover函数要放在defer里面,并且只能恢复同一个goroutine的并且是直接调用链函数发生的panic。recover不能恢复上一层函数的panic。

首先for循环语句是程序中性能最高的循环之一,我一般都用它。

1.for 有两种形式:一种是数字形式,另一种是通用形式。

数字形式的 for 循环,通过一个数学运算不断地运行内部的代码块。 下面是它的语法:

block 将把 name 作循环变量。 从第一个 exp 开始起,直到第二个 exp 的值为止, 其步长为第三个 exp 。 更确切的说,一个 for 循环看起来是这个样子

注意下面这几点:

所有三个控制表达式都只被运算一次, 表达式的计算在循环开始之前。 这些表达式的结果必须是数字。

var,limit,以及 step 都是一些不可见的变量。 这里给它们起的名字都仅仅用于解释方便。

如果第三个表达式(步长)没有给出,会把步长设为 1 。

你可以用 break 和 goto 来退出 for 循环。

循环变量 v 是一个循环内部的局部变量; 如果你需要在循环结束后使用这个值, 在退出循环前把它赋给另一个变量。

2.通用形式的 for 通过一个叫作 迭代器 的函数工作。 每次迭代,迭代器函数都会被调用以产生一个新的值, 当这个值为 nil 时,循环停止。 通用形式的 for 循环的语法如下:

注意以下几点:

explist 只会被计算一次。 它返回三个值, 一个 迭代器 函数, 一个 状态, 一个 迭代器的初始值。

f, s,与 var 都是不可见的变量。 这里给它们起的名字都只是为了解说方便。

你可以使用 break 来跳出 for 循环。

环变量 var_i 对于循环来说是一个局部变量; 你不可以在 for 循环结束后继续使用。 如果你需要保留这些值,那么就在循环跳出或结束前赋值到别的变量里去。

到第二个 exp 的值为止, 其步长为第三个 exp 。 更确切的说,一个 for 循环看起来是这个样子

3.注意下面这几点:

所有三个控制表达式都只被运算一次, 表达式的计算在循环开始之前。 这些表达式的结果必须是数字。

var,limit,以及 step 都是一些不可见的变量。 这里给它们起的名字都仅仅用于解释方便。

如果第三个表达式(步长)没有给出,会把步长设为 1 。

通用形败颂式的 for 通过一个叫作 迭代器 的函数工作。 每次迭代,迭代器函数都会被调用以产生一个新的值, 当这个值为 nil 时,循环停止。 通用形式的 for 循环的语法如下:

注意以下几点:

explist 只会被计算一次。 它返回三个值, 一个 迭代器 函数, 一个 状态, 一个 迭代器察槐郑的初始值。

f, s,与 var 都是不可见的变量。 这里给它们明伏起的名字都只是为了解说方便。

你可以使用 break 来跳出 for 循环。

环变量 var_i 对于循环来说是一个局部变量; 你不可以在 for 循环结束后继续使用。 如果你需要保留这些值,那么就在循环跳出或结束前赋值到别的变量里去。

到第二个 exp 的值为止, 其步长为第三个 exp 。 更确切的说,一个 for 循环看起来是这个样子

for循环是C语言编程中的一种循环语句。

1、具体执行过程:

1)求解表达式1。

2)求解表达式2。若其值为真,则执行 for 语句中指定的语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。

3)求解表达式3。

4)转回上面第2步继续执行。

5)循环结束,执行 for 语句下面的语句。

注意:执行过程中,“表达式1”只执行一次,循环是在“表达式2”“表达式3”和“内嵌语句”之间进行的。

2、绘制流程图过程中的路径规范:

1)一个流程从开始符开始,以结束符结束。开始符号只能出现一次,而结束符号可出现多次。若流程足够清晰,可省略开始、结束符号。

2)同一流程图内,符号大小需要保持一致,同时连接线不能交叉,连接线不能无故弯曲。

3)流程处理关系为并行关系的,需要将流程放在同一高度。

4)处理流程须以单一入口和单一出口绘制,同一路径的指示箭头应只有一个。

C语言基本简介:

C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目梁坦标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只粗腊比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

C语言二十世纪八十年代,美国国家标准局为了避免各开发厂商用的C语言语法产生差异,给C语言制定了一套完整的美国国家标准语法,称为ANSI C。作为C语言最初的标准。

2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度岩渣滑上实现了汉字编程。

C语言编译器普遍存在于各种不同的 *** 作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12287456.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存