gofor遍历会不会打乱顺序

Python014

gofor遍历会不会打乱顺序,第1张

Go 语言中的 for 循环不会按照顺序输出,因为它不是一个有序的过程。for 循环采用的是“基于条件的循环”,而不是“基于步长的循环”。这意味着当条件满足时,for 循环会执行一次,而不是每次都按照指定的步长执行一次。

如下的例子,要打印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。