我需要使用 defer
来释放使用 C
库手动创建的分配,但是我也需要在某些时候使用非0状态的 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被盗
那么,如何退出一个去荣誉程序声明 defer
呼叫? 有没有任何替代 os.Exit
?