登录
首页 >  Golang >  Go问答

Golang 中延迟无效的情况可能发生在紧急情况下

来源:stackoverflow

时间:2024-02-27 16:18:25 344浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《Golang 中延迟无效的情况可能发生在紧急情况下》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我的代码如下,但 defer 没有执行。

如果我们把工作放在恐慌之后,不会推迟工作吗?

package main

import (
  "fmt"
)

func main() {
  fmt.Println("begining of main")
  panic("stop here")
  defer fmt.Println("end of main")
}

nghiatran@nghiatran-VB:~/go/src/defer$ go run main.go
begining of main
panic: stop here

goroutine 1 [running]:
main.main()
        /home/nghiatran/go/src/defer/main.go:9 +0x96
exit status 2
nghiatran@nghiatran-VB:~/go/src/defer$

解决方案


语句顺序错误。 defer 将函数调用推入堆栈。在函数执行结束时,堆栈调用将以相反的顺序进行并执行。函数是否发生恐慌并不重要。

您需要先推送函数调用,然后再恐慌。

3497133331367

defer 语句的工作方式与 catchfinally 块不同,但它提供相同的功能。

参见Use of defer in Go

理论要掌握,实操不能落!以上关于《Golang 中延迟无效的情况可能发生在紧急情况下》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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