サンプルで学ぶ Go 言語:Exit

os.Exit を使うと引数に渡したステータスで直ちにプログラムを終了する。

package main
import (
    "fmt"
    "os"
)
func main() {

os.Exit を使うと defer は実行 されない 。 そのためこの fmt.Println は呼ばれない。

    defer fmt.Println("!")

ステータス 3 で終了する。

    os.Exit(3)
}

C などと違って、Go は main 関数が返す整数型の値を使って終了ステータスを表すことはない。 そのため、もしゼロでないステータスを返したければ、os.Exit を使わなければならない。

exit.gogo run で実行すると、 プログラム終了は go に補足され、画面に表示される。

$ go run exit.go
exit status 3

バイナリをビルドしてから実行する場合は、ターミナル上でステータスを確認できる。

$ go build exit.go
$ ./exit
$ echo $?
3

なお、プログラムによって ! が表示されることはない。