How can I exit from a goroutine (from within) from anywhere on the stack?


For example:

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

func bar() {

func goroutine() {
    for {

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:


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

Answered By – Stephen Weinberg

Answer Checked By – Willingham (GoLangFix Volunteer)

Leave a Reply

Your email address will not be published.