Go 言語はシンプルさと優雅さを追求しているため、Go 言語の設計者が従来の try...catch...finally 例外をサポートしていません。例外を制御構造と混在させると、コードが簡単に乱雑になる可能性があると考えられています。
開発者は例外を簡単に悪用して、小さなミスでも例外をスローする可能性があるためです。 Go 言語では、エラーを返すために複数の値が使用されます。例外を使用してエラーを置き換えたり、プロセスを制御したりしないでください。まれに、実際の例外が発生した場合 (除数が 0 など)。 Go で導入された例外処理 (defer、panic、recover) のみを使用してください。
これらの例外の使用シナリオは簡単に説明できます。Go はパニック例外をスローし、defer での回復によって例外をキャプチャし、通常どおり処理します。
コード例:
package main import "fmt" func main(){ defer func(){ // 必须要先声明defer,否则不能捕获到panic异常 fmt.Println("c") if err:=recover();err!=nil{ fmt.Println(err) // 这里的err其实就是panic传入的内容,55 } fmt.Println("d") }() f() } func f(){ fmt.Println("a") panic(55) fmt.Println("b") fmt.Println("f") }
出力結果:
a
c
55
d
終了コード 0、プロセスは正常に終了しました。
defer
defer 本来の英語の意味: vi. 延期する; 延期する; 従う vt. 延期する; 延期する。
defer の考え方は C のデストラクターに似ていますが、Go 言語では「破棄される」のはオブジェクトではなく関数です。defer は、次の場合に実行されるステートメントを追加するために使用されます。機能は終了します。静的である C のデストラクターとは異なり、Go の defer は動的であるため、ここでは指定ではなく追加に重点を置いていることに注意してください。
func f() (result int) { defer func() { result++ }() return 0 }
上記の関数は 1 を返します。これは、遅延する関数が追加され、関数が戻る前に名前付き戻り値の値が変更されるためです。とても便利ではないですか?ただし、defer ステートメントが実行されない場合、defer 関数は追加されないことに注意してください。上記のプログラムを次のように変更すると、
func f() (result int) { return 0 defer func() { result++ }() return 0 }
上記の関数は 0 を返します。 defer を追加する前に関数が返されました。
また、defer は複数回実行できるため、defer スタックが形成され、関数が返されるときに後続の defer ステートメントが最初に呼び出されることにも言及する価値があります。
パニック
##パニック 英語の本来の意味: n. パニック、パニック; パニック adj. パニック; 理由がない vt. パニックになる vi . 非常にパニックpanic は、非常に深刻で回復不可能なエラーを示すために使用されます。 Go 言語では、これは、interface{} 型の値 (つまり、任意の値) をパラメータとして受け取る組み込み関数です。パニックの機能は、私たちが普段遭遇する例外とまったく同じです。ただし、Go には try...catch がないため、通常、パニックによりプログラムがハングします (回復しない限り)。したがって、Go 言語における例外は実際には例外です。プログラムがすぐにハングするかどうかを確認するには、panic を呼び出してみてください。その後、Go の実行中にコール スタックが出力されます。ただし、重要な点は、関数の実行時にパニックが発生しても、関数はダウンしないということです。パニックは実行時にすぐに上に渡されるのではなく、遅延されます。遅延内のすべての処理が完了すると、またパニックが起こるので上に通過します。したがって、現時点での defer は、try-catch-finally のfinallyと多少似ています。
パニックはとても単純です。実際の例外をスローします。
recover
recover 元の英語の意味: vt. 回復する; 補う; 取り戻す vi. 回復する; 勝つ; 回復するボールを取り戻す n. 準備姿勢に戻す 前述したように、パニック機能はすぐには戻りませんが、一旦保留してから戻ります。現時点 (遅延中) に、パニックを捕捉し、パニックの配信を防ぐ方法があれば、例外処理メカニズムは完璧になります。 Go 言語には、recover 組み込み関数が用意されています。前述したように、パニックが発生すると、ロジックは遅延に移行し、遅延で待機します。recover 関数を呼び出すと、現在のパニックがキャプチャされます (if Ifそうすれば、捕らえられたパニックは上層部に伝わらず、世界に平和が戻るでしょう。あなたがやりたいことができます。 ただし、回復後、ロジックはパニック ポイントまで復元されず、関数は延期後も復帰することに注意してください。 結論: Go の例外に対する態度 (正確にはパニック) はこれであり、例外の存在を完全に否定するわけではありませんが、同時に例外の使用を強く推奨しません。 。以上がGo言語での例外処理の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

GolangとPythonの主な違いは、並行性モデル、タイプシステム、パフォーマンス、実行速度です。 1. GolangはCSPモデルを使用します。これは、同時タスクの高いタスクに適しています。 Pythonは、I/O集約型タスクに適したマルチスレッドとGILに依存しています。 2。Golangは静的なタイプで、Pythonは動的なタイプです。 3.ゴーランコンパイルされた言語実行速度は高速であり、Python解釈言語開発は高速です。

Golangは通常Cよりも遅くなりますが、Golangはプログラミングと開発効率の同時により多くの利点があります。1)Golangのゴミ収集と並行性モデルにより、同時性の高いシナリオではうまく機能します。 2)Cは、手動のメモリ管理とハードウェアの最適化により、より高いパフォーマンスを取得しますが、開発の複雑さが高くなります。

GolangはクラウドコンピューティングとDevOpsで広く使用されており、その利点はシンプルさ、効率性、および同時プログラミング機能にあります。 1)クラウドコンピューティングでは、GolangはGoroutineおよびチャネルメカニズムを介して同時リクエストを効率的に処理します。 2)DevOpsでは、Golangの高速コンピレーションとクロスプラットフォーム機能により、自動化ツールの最初の選択肢になります。

GolangとCにはそれぞれ、パフォーマンス効率に独自の利点があります。 1)GolangはGoroutineおよびGarbage Collectionを通じて効率を向上させますが、一時停止時間を導入する場合があります。 2)Cは、手動のメモリ管理と最適化を通じて高性能を実現しますが、開発者はメモリリークやその他の問題に対処する必要があります。選択するときは、プロジェクトの要件とチームテクノロジースタックを考慮する必要があります。

Golangは高い並行性タスクにより適していますが、Pythonには柔軟性がより多くの利点があります。 1.Golangは、GoroutineとChannelを介して並行性を効率的に処理します。 2。Pythonは、GILの影響を受けるが、複数の並行性メソッドを提供するスレッドとAsyncioに依存しています。選択は、特定のニーズに基づいている必要があります。

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

seetgolangforhighperformance andconcurrency、ithyforbackendservicesandnetworkプログラミング、selectthonforrapiddevelopment、datascience、andmachinelearningduetoistsversitydextentextensextensentensiveLibraries。

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
