>백엔드 개발 >Golang >golang defer는 언제 실행되나요?

golang defer는 언제 실행되나요?

(*-*)浩
(*-*)浩원래의
2019-12-03 10:00:452618검색

golang defer는 언제 실행되나요?

Golang에는 defer라는 특별한 제어문이 있습니다. defer 문은 리소스 해제 등과 같은 특정 기능의 호출을 지연하는 데 사용됩니다. 함수는 마지막에 실행되지만 Return 이전에 코드에 대해 간단히 이해해 봅시다: (추천 학습:go)

🎜🎜#🎜🎜 ## 🎜🎜#execute 결과는 다음과 같습니다.

package main

func main() {
    test()
}func test() {
    println("test1")    defer func() {
        println("defer test2")
    }()
    println("test3")
}
defer가 포함된 함수가 마지막에 실행된 것이 분명합니다

이제 변경됩니다. 코드를 작성하고 코드를 패닉 상태로 만드는 경우, 예외가 발생하면 연기 지연 기능이 계속 실행됩니까?

test1
test3
defer test2

Output

package main

func main() {
    test()
}func test() {

    println("test1")
        panic("panic")    defer func() {
        println("defer test2")
    }()
    
    println("test3")
}

지연 기능이 실행되지 않는 이유는 무엇입니까? 패닉이 딜레이 함수 이전에 있기 때문이죠. 함수가 실행되기 전에는 패닉 함수가 실행되지 않고 결국 예외가 발생하는 것을 볼 수 있습니다.

위 내용은 golang defer는 언제 실행되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.