Мне нужно использовать defer
для бесплатных распределений, созданных вручную с помощью библиотеки C
, но мне также нужно os.Exit
с не-статусом в какой-то момент. Сложная часть состоит в том, что os.Exit
пропускает любую отложенную инструкцию:
package main
import "fmt"
import "os"
func main() {
// `defer`s will _not_ be run when using `os.Exit`, so
// this `fmt.Println` will never be called.
defer fmt.Println("!")
// sometimes ones might use defer to do critical operations
// like close a database, remove a lock or free memory
// Exit with status code.
os.Exit(3)
}
Игровая площадка: http://play.golang.org/p/CDiAh9SXRM украден из https://gobyexample.com/exit
Итак, как выйти из программы go, выполняющей объявленные объявленные вызовы defer
? Есть ли альтернатива os.Exit
?