匿名函数
匿名函数就是将一个函数直接赋值给一个变量,这个函数没有函数名,所以叫匿名函数。
代码实例
1 | package main |
闭包
Go的闭包: 可以简单理解为一个函数返回了一个匿名函数。
代码实例
1 | package main |
运行结果:1
2
311
12
13
defer(延迟函数)
defer语句时一种延迟执行的语句,在函数中可以添加多个defer语句,当函数执行到最后时,会逆序执行defer 语句操作。可以理解为在函数执行时遇到defer语句先将语句放入一个堆栈中,当函数执行结束时从堆栈中一条条取出defer语句执行。
defer 主要用于资源的管理和回收。
无论发生任何错误已经defer的语句都会照常执行。
代码实例
1 | package main |
Panic函数
Go的一个异常处理函数,可以中断函数的控制流程,让函数进入“恐慌”状态。但函数中的延迟函数还是会正常执行(前提是处于panic之前的延迟函数)。
代码实例
1 | package main |
Recover函数
与Panic相对应的函数,可以将处于恐慌的goroutine恢复,recover函数只有在延迟函数中才可以正常生效,在函数正常执行的过程中,调用recover函数回返回nil,但如果当前goroutine陷入恐慌,调用recover可以捕获到panic的函数值,并且恢复后续正常的执行。
代码实例
1 | package main |