GO语言基础语法7 | 青训营笔记

50 阅读1分钟

在go中可以给某个类型的函数取别名,用type定义。这样这个类型的函数在作为其他函函数的参数时,可以很好的封装被调用函数细节,聚焦于调用函数内的实现。

和java和c++11不同,go没有抛出异常机制,取而代之的是panic和recover机制。 panic是一个函数,调用它会中断原来的控制流程并退出,但是已定义的defer语句还会在退出前执行。产生panic的函数退出后,外层函数接下来也像调用了panic一样退出,直到发生panic的goroutine返回,然后整个程序退出。除了调用panic函数以外,运行时错误也会产生panic。

而为了修复处于panic状态的goroutine,可以使用go中的recover函数。如果在函数体内调用recover会无事发生,返回nil。而如果在defer语句中调用recover就可以在当前goroutine处于panic状态时捕获到panic函数的输入并取消panic状态。但要注意必须在panic语句之前写好defer逻辑,且recover必须在defer中。

和c++有些类似,go中main函数也会被自动调用,用于main包的初始化和执行。而main包又是程序的入口。