[解決済み] os.Exit()とpanic()はいつ使うのか?
質問
の主な違いについて、どなたか教えてください。
os.Exit()
と
panic()
の2つがあり、それらがGoで実際にどのように使用されているか?
どのように解決するのですか?
まず、「実際にどのように使われているのか」という疑問がある場合、手始めとして 検索 を検索することです (または、十分に大きな Go コード ベースを検索することです)。 パッケージ ドキュメント を参照してください。
では
os.Exit
と
panic
は全く異なるものです。
panic
は、プログラムまたはその一部が回復不可能な状態になったときに使われます。
いつ
panic
が呼び出されると、スライスのインデックスが境界外にある場合や型アサーションに失敗した場合などの実行時エラーに対して暗黙のうちに呼ばれることもありますが、現在の関数の実行を直ちに停止し、goroutineのスタックを巻き戻し始め、途中で遅延した関数があればそれを実行します。巻き戻しがゴルーチンのスタックの最上位に達した場合、プログラムは終了します。
os.Exit
は、プログラムを中断するときに使います。
を直ちに中止する必要がある場合に使用されます。
を実行し、エラーコードも (他のプログラムが何が起こったかを報告するために使用できるように) 返します。これはテストにおいて、あるテストが失敗した後、他のテストも失敗することが分かっている場合に便利です。これはまた、プログラムが必要なことをすべて行い、今ちょうど終了する必要がある場合、つまり、ヘルプメッセージを表示した後にも使用できます。
たいていの場合
panic
を使うことはないでしょう (その場合は
error
を返すべきです)、また、ほとんど
os.Exit
は、テストや迅速なプログラム終了のためのいくつかのケースを除いて、ほとんど必要ありません。
関連
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み] Goの:=と=の演算子の違い
-
[解決済み】Goのタグはどのような用途に使われますか?
-
[解決済み】init()関数はいつ実行されるのですか?
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
-
[解決済み】GoでJSONのPost Requestを処理する
-
[解決済み] intをint64に変換するには?
-
[解決済み] Goを使って大きなファイルを効率よくダウンロードするにはどうしたらいいですか?
-
[解決済み] ログをファイルに書き出す方法
-
[解決済み] reflectを使用して、構造体フィールドの値を設定するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] サーバーでSSLが有効になっていない
-
[解決済み] time.Sleepを使わずにすべてのゴルーチンが終了するのを待つには?
-
[解決済み] スライスを宣言するのか、スライスを作るのか?
-
[解決済み] オブジェクトのプロパティを二重引用符で囲んで使用するには?
-
[解決済み] GolangでMkdirを使ってネストされたディレクトリを作成するには?
-
[解決済み] ログをファイルに書き出す方法
-
[解決済み] interface{}をint型に変換する
-
[解決済み] 単一値コンテキストにおける複数値
-
[解決済み] reflectを使用して、構造体フィールドの値を設定するにはどうすればよいですか?
-
[解決済み] Goプログラムで静的リソースをバンドルする最良の方法は何ですか?