Go的异常处理 defer, panic, recover
注:题目来源均出自牛客网。
一、选择题
Map(集合)属于Go的内置类型,不需要引入其它库即可使用。
在函数声明中,返回的参数要么都有变量名,要么都没有。
C选项函数声明语法有错误,error是返回类型,但没有返回名。
go语言中字符串是UTF-8编码并存储的,它语言不定长的字节,所以它不支持下标操作,因为没一个下标操作代表的是固定长度的字节,所以不能对字符串中某个字符单独赋值。
由panic引发异常以后,程序停止执行,然后调用延迟函数(defer),就像程序正常退出一样。另外recover也是要写在延迟函数中的,如果发生异常延迟函数就不执行了,那就永远无法recover了。
本题考查对协程与进程的理解,B选项应该是协程比线程更轻量。
Go语言的语法上是不支持指针运算的,所有指针都在可控的一个范围内使用,没有C语言的*void然后随意转换指针类型这样的东西。
字符串只有两种直接表达的形式,一种是双引号,一种是反引号。
A选项中的反引号是中文符号,编译肯定会报错。
golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作;
在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行(立即执行:意思是当前Goroutine不会因此操作而被阻塞);
select的用法与switch非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述。与switch语句可以选择任何可使用相等比较的条件相比,select有比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作。
基本思路:将引用的外部包的源代码放在当前工程的vendor目录下面,go 1.6以后编译go代码会优先从vendor目录先寻找依赖包。
它解决了避免项目代码外部依赖过多,迁移后需要多次go get 外包依赖包;而且通过go get 重新拉去的外部依赖包的版本可能和工程开发时使用的不一致导致编译错误的问题。
布尔型变量应该赋值是true和false,正确答案应该是BCD。
二、参考资料
三、总结
本次Go语言练习主要涉及到异常处理、集合、函数声明、对协程的理解、字符串连接、select机制、vendor和布尔型的编码规范。
推荐阅读
-
go语言异常panic和恢复recover用法实例
-
GO语言异常处理机制panic和recover分析
-
go语言defer panic recover用法总结
-
golang 学习(二十)defer 、panic、recover 用法,以及异常处理
-
[日常] Go语言圣经-Panic异常,Recover捕获异常习题
-
Go基础系列:defer、panic和recover
-
13. Go 语言异常机制:panic 和 recover
-
Go的异常处理 defer, panic, recover
-
小学生也能看懂的Golang异常处理recover panic
-
Go 学习之路:异常处理defer,panic,recover