Was ist der idiomatische Weg, ein Programm mit einem Fehlercode zu beenden?Exit mit Fehlercode in gehen?
Die Dokumentation für Exit sagt "Das Programm wird sofort beendet; verzögerte Funktionen werden nicht ausgeführt.", Und log.Fatal ruft nur Exit auf. Für Dinge, die keine abscheulichen Fehler sind, erscheint das Beenden des Programms ohne laufende Deferred-Funktionen extrem.
Soll ich einen Zustand weitergeben, der anzeigt, dass ein Fehler aufgetreten ist, und dann Exit (1) an einem Punkt aufrufen, an dem ich weiß, dass ich sicher ausfahren kann und alle zurückgestellten Funktionen ausgeführt wurden?
Wie wäre es mit einem globalen Variablenstatus, der standardmäßig 'clean' ist und bei einem nicht-fatalen Fehler auf' dirty' gesetzt wird. Bevor Sie 'main()' beenden, können Sie nach dieser Variablen suchen. Nicht perfekt nett, aber in einigen Fällen könnte es die einfachste Lösung sein. (Ich bin froh, Kommentare können nicht vertagt werden :)) – topskip
Ja, das ist im Grunde, was ich getan habe. Ich finde es unelegant, weil ich es vermeiden muss, etwas in main zu verschieben (weil ich immer noch Exit (1) anrufe, um den Return-Code zu setzen, und nicht meine verzögerte fn), also steckte ich, was mein Haupt war (das waren nur drei Zeilen, von denen eine eine Verschiebung in eine Funktion ist. Ich hoffe, dass jemand einen besseren Weg hat. Bisher hat eine Person mit os.Exit geantwortet und dann ihre Antwort gelöscht, als ich aussprach, dass ich die os.Exit-Dokumente in meinem Post zitiere, und jetzt gibt es eine andere Antwort, die mich auf os.Exit verweist. – dan