Мені потрібно використовувати 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?