문제

For example:

func foo() {
    // How can I exit the goroutine here?
}

func bar() {
    foo()
}

func goroutine() {
    for {
        bar()
    }
}

func main() {
    go goroutine()
}

How can I exit the goroutine directly from foo() or bar()? I was thinking of maybe using panic and recover, but I am not sure exactly how they work. (With traditional exception handling, I would just wrap the body of goroutine() in a try block and throw an exception when I want to exit.)

EDIT: If I used panic, do I even need to recover()?

도움이 되었습니까?

해결책

There is a function in runtime for exiting a goroutine: http://golang.org/pkg/runtime/#Goexit

runtime.Goexit()

If your panic escapes the goroutine, the entire program panics. So yes, you would need to recover.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top