Мені потрібно використовувати defer
безкоштовні розподіли, створені вручну за допомогою C
бібліотеки, але os.Exit
в якийсь момент мені також потрібно зі статусом не 0. Хитра частина полягає в тому, що 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
?