ハクトーバーフェスト中に Mattermost の人々と素晴らしい経験をした後 (彼らからの思いやりのある贈り物も忘れないでください!)、私は 11 月にもう一度彼らと一緒に行くことにしました。
彼らのサーバーは Go で書かれているため、今回は文字通り彼らと一緒に「行く」ことになります (私の傷ついたユーモアのセンスをお詫びします)。 Hacktoberfest の期間中、私は React Native を使用して TypeScript で書かれたモバイル アプリに取り組みました。しかし、今回私が受けた問題はサーバーに関連したもので、Go プロジェクトに取り組むのはこれが初めてです。
私は Go についてまったく予備知識がなかったので、最初に Go を学ぶという正しい決断を下しました。幸いなことに、Go は非常に簡単に手に入れることができました。高速で信頼性の高いソフトウェアを作成できると同時に、そのシンプルさに本当に驚きました。基本を理解するのに必要なのは 1 時間のビデオだけでしたし、Rust を学んだときよりもずっと立ち止まる時間が減りました。
まず最初に、時間をかけてこの愛らしい間抜けなホリネズミを鑑賞したいと思います:
それはさておき、私は Go が静的かつ強力に型付けされていることが気に入っています。これは私が最近友人と話し合った内容です。静的言語や強く型付けされた言語では、コード設計に少しだけ考慮する必要がありますが、大量のあいまいさを排除できます。さらに、Rust と同様に、Go コンパイラーは可能な限り型を推論できるため、余分な考えがさらに簡単になります。
Go を「現代の C」と呼ぶ人もいます。その理由がわかりました。非常にパフォーマンスが良く、C のような単純さを備えています。ポインターを使用した低レベルの操作をサポートしています。ただし、C とは異なり、インターフェイス、スライス、マップなど、現代の言語に期待される機能が付属しています。もう 1 つの魅力的な機能は、並列実行を処理するための独特のシンプルなモデルである goroutine です。
これは非常に単純な問題だったので、私は実際に Go の学習に徹底的に取り組みすぎたことが判明しました。私がしなければならなかったのは、エラー処理を 1 つのファイルに実装することだけでした。
この問題には、エラーが返されるかログに記録されることを好むと便宜的に言及されているセクションがあります。 Mattermost の開発者ドキュメントをよく知っていたので、エラー処理に関するセクションをすぐに見つけました。
私が遭遇した唯一の障害は、どのログ レベルを使用するかを決定することでした。ドキュメントで言及されていましたが、定義がまだ曖昧であることがわかりました。しかし、プロジェクト内を簡単に検索したところ、これらの関数は他の場所でも常に同じログ レベルを使用していることがわかりました。これで私の疑問は解消されました。
私が取り組んでいた関数は静的な HTML ページを提供するため、次のようにエラーが発生したときに適切な HTTP エラー コードが返されるようにしました。
http.Error(w, err.Error(), http.StatusInternalServerError)
作業はこれですべてです! PR を提出しましたが、Go を使用するのは初めてだったので最初は少し心配していましたが、結果的には問題ありませんでした。 PR はマイナー修正の直後にマージされました。
全体的に、これは楽しくて取り組みやすい問題でした。これまで取り組んできた他の問題ほど難しくなかったとしても、それを選んでよかったと思います。新しい言語を学ぶのはいつも嬉しいことですが、これはそのための完璧な言い訳でした。そして、すぐに使えるようになってとても良かったです。
以上がMattermostと一緒に行きましょう!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。