zoukankan      html  css  js  c++  java
  • Go 面试每天一篇(第 65 天)

    
    Go 面试每天一篇(第 65 天)
    
    
    1.下面列举的是 recover() 的几种调用方式,哪些是正确的?
    
    A.
    1func main() {
    2    recover()
    3    panic(1)
    4}
    B.
    1func main() {
    2    defer recover()
    3    panic(1)
    4}
    C.
    1func main() {
    2    defer func() {
    3        recover()
    4    }()
    5    panic(1)
    6}
    D.
    1func main() {
    2    defer func() {
    3        defer func() {
    4            recover()
    5        }()
    6    }()
    7    panic(1)
    8}
    参考答案及解析:C。recover() 必须在 defer() 函数中直接调用才有效。上面其他几种情况调用都是无效的:直接调用 recover()、在 defer() 中直接调用 recover() 和 defer() 调用时多层嵌套。
    
    2.下面代码输出什么,请说明?
    
     1func main() {
     2    defer func() {
     3        fmt.Print(recover())
     4    }()
     5    defer func() {
     6        defer fmt.Print(recover())
     7        panic(1)
     8    }()
     9    defer recover() 
    10    panic(2)
    11}
    参考答案及解析:21。recover() 必须在 defer() 函数中调用才有效,所以第 9 行代码捕获是无效的。在调用 defer() 时,便会计算函数的参数并压入栈中,所以执行第 6 行代码时,此时便会捕获 panic(2);此后的 panic(1),会被上一层的 recover() 捕获。所以输出 21。
    
    引自《Go语言101》
    
    解析若有不妥之处,欢迎在留言区交流、指正!
    
    看下今天的题目:
    1.flag 是 bool 型变量,下面 if 表达式符合编码规范的是?
    
    A. if flag == 1
    B. if flag
    C. if flag == false
    D. if !flag
    2.下面的代码输出什么,请说明?
    
     1func main() {
     2    defer func() {
     3        fmt.Print(recover())
     4    }()
     5    defer func() {
     6        defer func() {
     7            fmt.Print(recover())
     8        }()
     9        panic(1)
    10    }()
    11    defer recover()
    12    panic(2)
    13}
    这道题与昨天的第二题有点类似,不过答案都在昨天的两道题目里了。
    
  • 相关阅读:
    git 更新代码
    jmeter 线程组之间传递动态变化的变量值
    MYSQL 使用存储过程批量更新表数据
    linux查看日志中特定字符串以及前后信息内容命令
    导出表结构 字段说明
    转 awk统计nginx每天访问最高的接口
    MySQL 同一字段匹配多个值
    Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2)
    转 Xshell ssh长时间连接不掉线设置
    Vs.net 常用命令行
  • 原文地址:https://www.cnblogs.com/ludundun/p/11807253.html
Copyright © 2011-2022 走看看