我试图熟悉Go,尝试它是动态调用子例程的关键字。我想知道这个关键字使用起来是否有点危险,因为它可能会创建一个危险的无限循环,如果没有被注意到,它会消耗所有系统内存并在几秒钟内使主机崩溃。go
因此,让我们假设有人想要创建一个递归函数,该函数多次调用自己并增加计算,它使用关键字来增加并行计算。如果代码中有一些小错误,它可能会产生一个危险的无限循环。go
下面是这个危险的无穷大循环的一个例子。
/* WARNING! Running this code will probably crash your system! */
package main
func infinity() {
LOOP:
go infinity()
goto LOOP
}
func main() {
infinity()
}
/* WARNING! Running this code will probably crash your system! */
此代码在我的机器上7秒内消耗了大约32gb的系统内存,当没有更多的系统内存可用时,机器只是冻结,除了硬重置之外,似乎没有机会解冻。
那么,难道您不同意在使用关键字时始终使用带有中止 criterium 的反变量是明智的吗?go
叮当猫咪
沧海一幻觉
随时随地看视频慕课网APP
相关分类