登录
首页 >  Golang >  Go问答

以下程序为什么最终会输出0

来源:SegmentFault

时间:2023-01-08 16:43:40 226浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《以下程序为什么最终会输出0》,涉及到go,有需要的可以收藏一下

问题内容

package main

import(
    "fmt"
    "errors"
)

func foo(){
    panic(errors.New("bug"))
    return
}


func test()(result int){
    defer func(){
        if r := recover(); r!= nil{
            err := r.(error)
            fmt.Println("catch error", err) // catch error bug
        }
    }()

    foo()

    return 100
}


func main(){
    fmt.Println(test()) // 0
}

正确答案

go语言遇到

panic
会直接执行
defer
函数, 在
defer
里遇到
recover
则会忽略异常继续执行defer之后的代码。

返回值的关键是 test函数有个int的返回值,这个返回值会在调用的时候初始化为0的,在defer函数中是可以修改的,假如你在 defer函数最后加一句

result = 1
则程序输出就是1。

今天带大家了解了go的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表