Files
llgo/compiler/cl/_testgo/goexit/in.go

58 lines
672 B
Go
Raw Normal View History

2025-02-16 19:53:38 +08:00
package main
import (
"runtime"
)
func main() {
demo1()
demo2()
demo3()
}
func demo1() {
ch := make(chan bool)
go func() {
defer func() {
ch <- true
}()
runtime.Goexit()
}()
<-ch
}
func demo2() {
ch := make(chan bool)
go func() {
defer func() {
if r := recover(); r != nil {
panic("must nil")
}
ch <- true
}()
runtime.Goexit()
}()
<-ch
}
func demo3() {
ch := make(chan bool)
go func() {
defer func() {
r := recover()
if r != "error" {
panic("must error")
}
ch <- true
}()
defer func() {
if r := recover(); r != nil {
panic("must nil")
}
panic("error")
}()
runtime.Goexit()
}()
<-ch
}