プログラミング言語Goは、プログラマの生産性をより向上させるためのオープンソースプロジェクトです。
Goは表現豊かでシンプルできれいで効率的です。並行処理のメカニズムは、革新的な型システムによる柔軟でモジュール化されたプログラム構造を実現しつつ、マルチコアやネットワーク機器にほとんど特別な考慮をすることなく容易にプログラムを書くことを可能にします。Goは素早く機械語にコンパイルでき、さらにガーベッジコレクションの利便性とランタイムリフレクションのパワーを併せ持ちます。動的形付けを持つインタプリタ型言語と感じられるほどに速い、静的型付けを持つコンパイル言語です。
Goコンパイラ、ツール、ライブラリをダウンロードしインストールする手順です。
3つのセクションから成るインタラクティブなGoのイントロダクションです。最初のセクションでは基本的な文法・データ構造を扱い、次にメソッドとインタフェースについて議論し、最後に並行化基本命令を紹介します。各セクションの終わりには練習問題がありますので、学習した内容の復習ができます。利用には、オンラインツアーとローカルへインストールする方法があります。
このドキュメントではどのようにgoコマンドでパッケージやコマンドをフェッチ・ビルド・インストールし、テストを実行するのかを説明しています。スクリーンキャスト(英語)も利用できます。
きれいで慣用的なコードを書くtipsを記したドキュメントです。すべての入門Goプログラマーにとって必読な記事です。最初に読むツアー・言語仕様の内容を補助する位置づけのものです。
Goについての一般的な質問に対する回答です。
GoコミュニティがメンテナンスしているWikiです。
その他のGoの学習素材を利用するにはWikiのLearnページを参照ください。
Goの標準ライブラリの説明書です。
Go toolの説明書です。
公式のGo言語仕様です。
あるgoroutineの変数の読み出しをする際に、他のgoroutineからその変数へ書き込んだ値が読み込まれることを保証する条件を記したドキュメントです。
Goプロジェクトのオフィシャルブログです。ニュースやGoチームやゲストによる特集記事を掲載しています。(英語)
Goプログラムのガイドツアー
Goの記事をさらに読みたい場合は、WikiのArticlesページをご覧ください。
Goの速さ、楽しさ、生産性を実現する3つの要素(インタフェース、リフレクション、並行処理)。簡単なWebクローラを構築しながらこれらの要素を説明します。
鍵となるGo設計のゴールはコードの順応性です。簡素な設計ができ明確で自然な方法でビルドできることです。この講演では、送信されてくるTCPコネクションのペアを引き合わせ、Goの並行処理メカニズム、インタフェース、標準ライブラリを使ってWebインタフェース等の機能を拡張する簡単な「チャットルーレット」サーバをAndrew Gerrandが説明します。プログラムの機能が劇的に変化する一方で、プログラムの機能が成熟するにつれてGoの柔軟性が元々のプログラムの設計の維持に寄与していく様子をご覧いただけます。
並行処理はハイパフォーマンスなネットワークサービスを設計する鍵となります。Goの並行化基本命令(goroutines、チャネル)は並行処理の実行を実現するシンプルで効率的な方法を提供します。この講演では、難解な並行性の問題がシンプルなGoのコードでうまく解決できることをご覧いただけます。
この講演ではGo並行処理パターンでの話題を、さらにディープなGoの並行化基本命令に広げます。
Goに関する講演内容をもっと見るには、Goの講演資料、wikiページをご覧ください。
他の言語へ翻訳されたドキュメントを見るにはWikiのNonEnglishページをご覧ください。