2010-11-25 57 views
17

如何從main返回退出代碼,就像我在C中一樣? 上下文:我檢查是否有單個命令行參數,如果參數數量或參數無效,我將打印使用情況並返回錯誤狀態代碼。如何從Go中的func main返回?

回答

23

Go使用Exit函數。只需通過狀態代碼作爲參數,你就完成:)

+4

這可能在許多情況下,但不是所有的工作:當你只是os.Exit()時,刷新記錄器/關閉文件的事情不會發生。延期不運行。 – Julian 2015-03-05 11:47:47

+1

你可以這樣做https://github.com/anacrolix/torrent/blob/master/cmd/torrentfs/main.go#L78 – 2016-08-14 04:53:04

5

正確的答案是由馬特喬伊納的鏈接。基本上是以下片段。一個人必須保證代碼的那安息呢調用os.Exit()的任何地方,像flag.ExitOnError,log.Fatalf()等

func main() { os.Exit(mainReturnWithCode()) } 

func mainReturnWithCode() int { 
    // do stuff, defer functions, etc. 
    return exitcode // a suitable exit code 
}