runtime: implement Goexit

This is needed for full support for the testing package
This commit is contained in:
Ayke van Laethem
2024-11-21 09:20:14 +01:00
committed by Ron Evans
parent 65b085a5d5
commit aed555d858
5 changed files with 53 additions and 14 deletions
+19
View File
@@ -1,5 +1,10 @@
package main
import (
"runtime"
"time"
)
func main() {
println("# simple recover")
recoverSimple()
@@ -22,6 +27,9 @@ func main() {
println("\n# defer panic")
deferPanic()
println("\n# runtime.Goexit")
runtimeGoexit()
}
func recoverSimple() {
@@ -104,6 +112,17 @@ func deferPanic() {
println("defer panic")
}
func runtimeGoexit() {
go func() {
defer func() {
println("Goexit deferred function, recover is nil:", recover() == nil)
}()
runtime.Goexit()
}()
time.Sleep(time.Millisecond)
}
func printitf(msg string, itf interface{}) {
switch itf := itf.(type) {
case string:
+3
View File
@@ -27,3 +27,6 @@ recovered: panic 2
# defer panic
defer panic
recovered from deferred call: deferred panic
# runtime.Goexit
Goexit deferred function, recover is nil: true