Golang が最初の作業タスクをどのように解決するか
Golang、または単に Go は、Go gopher 言語として知られるようになりました。なぜホリネズミなのかまだ理解できない場合は、この記事で驚くべきマスコットの歴史を見つけることができます。さて、最初から始めましょう。Golang は、世の中で最も生産性の高いプログラミング言語の 1 つとして知られるようになりました。 Java や Python などの従来の言語とは異なり、Go は書きやすいコードと迅速な実行の間で独自のバランスをとっており、開発を高速化し、デバッグとテストの時間を短縮します。この記事では、遅くて不安定な REST API マイクロサービスと対話するプロジェクトでゴルーチンとコンテキストを使用する実際の例を見ていきます。
タスク
あなたがチームに加わったばかりで、チーム リーダーから、Golang で書かれた新しいマイクロサービス (リスク マネージャーなど) を、REST API を通じて公開されるユーザー マイクロサービスにバインドするように頼まれたとします。
問題
リスク マネージャーは、速度が遅く不安定な可能性がある REST API を操作する必要があるため、そのようなリクエストを慎重に処理する必要があります。非同期 HTTP リクエストとコンテキストにはゴルーチンを使用して、リクエストのタイムアウトとエラー処理を管理します。
解決策
Golang でゴルーチンとコンテキストを使用すると、同時タスクの効率的な管理と、低速または不安定な外部 API の処理が可能になります。
コードで解釈するための最初のステップは API を作成することです。私はシェアウェア サービスを使用しました https://mockapi.io/ REST を生成すると便利ですusers.
などのエンティティの基本セットを含む API誰かが最善を尽くし、あなたの会社にはユーザーをリストする内部サービスがあるとします。私たちのタスクは、新しいリスク マネージャーでユーザー リストを再利用することです (ユーザー データ構造は mockapi.io で記述された契約を満たしています)。以下のコードはリクエストを作成し、本文を処理して、ユーザーのリストまたは対応するエラーを生成します。
type User struct { CreatedAt string Name string Avatar string Id string } // Original slow request func fetchUsers(ctx context.Context) (*[]User, error) { resp, err := http.Get("https://<use your id after sign up>.mockapi.io/api/v1/users") if err != nil { return nil, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return nil, fmt.Errorf("failed to fetch users: %s", resp.Status) } var users []User if err := json.NewDecoder(resp.Body).Decode(&users); err != nil { return nil, err } return &users, nil }
操作を制御するために、他のすべてのコンテキストの最上位の親コンテキストである context.Background を使用します。このコンテキストを新しいデータで補足します。この場合はタイムアウト - context.WithTimeout で、これを 2 秒として定義します。 Go でのコンテキストの操作について詳しくは、この記事をご覧ください。
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() usersChan := make(chan *[]User) errChan := make(chan error) go func() { users, err := fetchUsers(ctx) if err != nil { errChan <- err return } usersChan <- user }() select { case users := <-usersChan: fmt.Printf("Fetched users: %+v\n", users) case err := <-errChan: fmt.Printf("Error fetching users: %v\n", err) case <-ctx.Done(): fmt.Println("Request timed out") }
この例では、内部サービスから受信した結果を記録するために usersChan を使用し、エラーを記録するために 2 番目のチャネル errChan を使用します。
遅い API からの応答が 2 秒以内に到着しない場合、エラーを検出し、外部レイヤーで正しく処理する機会を与えます。
リスク マネージャーを使用したこの実践的な例では、ゴルーチンによって非同期 HTTP リクエストが有効になり、コンテキストによってタイムアウト処理が保証されます。これは信頼性が高く回復力のあるマイクロサービスを構築するために重要です。
追伸
この記事は、基本的な知識はあるものの、その知識をどこに応用できるかがよくわからない初心者開発者を対象としています。フィードバックをお待ちしております。また、ご質問にも喜んでお答えいたします。
Go 言語の最も基本的なものの実際の例とその他のいくつかの実装は、私の GitHub のリンクにあります
以上がGolang が最初の作業タスクをどのように解決するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

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

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

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase
