導入

Goは新しい言語です。既存の言語からアイデアを借用していますが、効果的なGoプログラムをその関連言語で書かれたプログラムとは異なる特徴を持つ特殊な性質があります。C++やJavaプログラムをGoに直接翻訳しても満足のいく結果は得られません—JavaプログラムはJavaで書かれるものであり、Goで書かれるものではありません。一方、Go の観点から問題について考えることで、成功を収める大きく異なるプログラムを生み出すことができます。言い換えれば、Goを上手に書くためには、その性質とイディオムを理解することが重要です。また、命名、フォーマット、プログラム構成などのGoプログラミングにおける確立された慣習を知ることも重要です。そうすることで、あなたが書くプログラムが他のGoプログラマーにとって理解しやすくなります。

このドキュメントは、明確で慣用的なGoコードを書くためのヒントを提供します。これは言語仕様、Goツアー、およびGoコードの書き方を補完するものであり、これらをまず読むことをお勧めします。

2022年1月追記: このドキュメントは2009年のGoリリース時に書かれ、それ以降大幅な更新は行われていません。言語自体の使い方を理解するための良いガイドですが、言語の安定性のおかげで、ライブラリについてはほとんど触れておらず、ビルドシステム、テスト、モジュール、ポリモーフィズムなど、執筆以降のGoエコシステムの重要な変更については何も述べていません。更新の予定はありません。多くのことが起こっており、拡大し続ける多数のドキュメント、ブログ、書籍が現代のGoの使用法を素晴らしく説明しているからです。Effective Goは引き続き有用ですが、読者はこれが完全なガイドからは程遠いことを理解してください。詳細についてはissue 28782を参照してください。

Goパッケージソースは、コアライブラリとしてだけでなく、言語の使用方法の例としても機能することを意図しています。さらに、多くのパッケージには動作する自己完結型の実行可能な例が含まれており、go.devウェブサイトから直接実行できます(たとえば、この例のように、必要に応じて「Example」という単語をクリックして開きます)。問題にどのようにアプローチするか、または何かがどのように実装されるかについて疑問がある場合、ライブラリのドキュメント、コード、および例が答え、アイデア、背景を提供できます。