Ich muss verwenden defer
, um Zuordnungen freizugeben, die manuell mit der C
Bibliothek erstellt wurden, aber ich muss auch os.Exit
irgendwann den Status ungleich 0 haben. Der schwierige Teil ist, dass os.Exit
jede zurückgestellte Anweisung übersprungen wird:
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)
}
Spielplatz: http://play.golang.org/p/CDiAh9SXRM gestohlen von https://gobyexample.com/exit
Wie kann man ein Go-Programm beenden, das deklarierte defer
Anrufe berücksichtigt? Gibt es eine Alternative zu os.Exit
?