ドキュメント

Goプログラミング言語は、プログラマーの生産性を向上させるためのオープンソースプロジェクトです。

Goは表現力豊かで、簡潔で、クリーンで、効率的です。その並行処理メカニズムにより、マルチコアおよびネットワーク化されたマシンを最大限に活用するプログラムを簡単に記述でき、その斬新な型システムにより、柔軟でモジュール式のプログラム構築が可能になります。Goは機械語にすばやくコンパイルされますが、ガベージコレクションの利便性とランタイムリフレクションの機能を備えています。これは、動的型付けのインタープリター言語のように感じられる、高速で静的型付けのコンパイル言語です。

はじめに

Goのインストール

Goのダウンロードとインストール手順。

チュートリアル:はじめに

Goのコード、ツール、パッケージ、モジュールについて少し学ぶための簡単なHello, Worldチュートリアル。

チュートリアル:モジュールの作成

関数、エラー処理、配列、マップ、単体テスト、コンパイルを紹介する短いトピックのチュートリアル。

チュートリアル:マルチモジュールワークスペースの開始

Goでマルチモジュールワークスペースを作成および使用する基本を紹介します。マルチモジュールワークスペースは、複数のモジュールにまたがる変更を行うのに役立ちます。

チュートリアル:GoとGinを使用したRESTful APIの開発

GoとGin Web Frameworkを使用してRESTful WebサービスAPIを作成する基本を紹介します。

チュートリアル:ジェネリクスの開始

ジェネリクスを使用すると、呼び出しコードによって提供される型のセットのいずれかで動作するように記述された関数または型を宣言および使用できます。

チュートリアル:ファジングの開始

ファジングは、見落とした可能性のあるエッジケースやセキュリティの問題をキャッチできるテストへの入力を生成できます。

Webアプリケーションの作成

簡単なWebアプリケーションの構築。

Goコードの書き方

このドキュメントでは、モジュール内で簡単なGoパッケージのセットを開発する方法と、go commandを使用してパッケージをビルドおよびテストする方法について説明します。

Goツアー

4つのセクションに分かれたGoのインタラクティブな入門書。最初のセクションでは基本的な構文とデータ構造について説明します。2番目のセクションではメソッドとインターフェースについて説明します。3番目のセクションではジェネリクスについて説明します。4番目のセクションではGoの並行処理プリミティブを紹介します。各セクションの最後には、学習したことを練習できるいくつかの演習があります。オンラインでツアーに参加するか、ローカルにインストールできます。

	$ go install golang.org/x/website/tour@latest
	

これにより、tourバイナリがGOPATHbinディレクトリに配置されます。

Goの使用と理解

Effective Go

明確で慣用的なGoコードを書くためのヒントを示すドキュメント。Goプログラマーの初心者必読です。これは、最初に読む必要があるツアーと言語仕様を補完します。

よくある質問(FAQ)

Goに関する一般的な質問への回答。

エディタープラグインとIDE

Goをサポートする一般的に使用されるエディタープラグインとIDEをまとめたドキュメント。

診断

Goプログラムの問題を診断するためのツールと方法論をまとめたもの。

Goガベージコレクターのガイド

Goがメモリを管理する方法と、それを最大限に活用する方法を説明するドキュメント。

依存関係の管理

コードが外部パッケージを使用する場合、それらのパッケージ(モジュールとして配布)が依存関係になります。

ファジング

Goファジングのメインドキュメントページ。

Goアプリケーションのカバレッジ

Goアプリケーションのカバレッジテストのメインドキュメントページ。

プロファイルガイド付き最適化

Goアプリケーションのプロファイルガイド付き最適化(PGO)のメインドキュメントページ。

参考文献

パッケージドキュメント

Go標準ライブラリのドキュメント。

コマンドドキュメント

Goツールのドキュメント。

言語仕様

公式のGo言語仕様。

Goモジュールリファレンス

Goの依存関係管理システムの詳細なリファレンスマニュアル。

go.modファイルリファレンス

go.modファイルに含まれるディレクティブのリファレンス。

Goメモリモデル

1つのゴルーチンでの変数の読み取りが、別のゴルーチンでの同じ変数への書き込みによって生成された値を観察することが保証される条件を指定するドキュメント。

貢献ガイド

Goへの貢献。

リリース履歴

Goリリース間の変更の概要。

データベースへのアクセス

チュートリアル:リレーショナルデータベースへのアクセス

Goと標準ライブラリのdatabase/sqlパッケージを使用してリレーショナルデータベースにアクセスする基本を紹介します。

リレーショナルデータベースへのアクセス

Goのデータアクセス機能の概要。

データベースハンドルのオープン

Goデータベースハンドルを使用して、データベース操作を実行します。データベース接続プロパティを使用してハンドルを開くと、ハンドルはユーザーに代わって管理する接続プールを表します。

データを返さないSQLステートメントの実行

SQL INSERTUPDATEDELETEなど、データベースを変更する可能性のあるSQL操作の場合は、Execメソッドを使用します。

データのクエリ

クエリからデータを返すSELECTステートメントの場合、QueryまたはQueryRowメソッドを使用します。

プリペアドステートメントの使用

繰り返し使用するためにプリペアドステートメントを定義すると、コードがデータベース操作を実行するたびにステートメントを再作成するオーバーヘッドを回避することで、コードの実行を少し速くすることができます。

トランザクションの実行

sql.Txは、CommitRollbackなどのトランザクション固有のセマンティクスを表すメソッドと、一般的なデータベース操作を実行するために使用するメソッドをエクスポートします。

進行中のデータベース操作のキャンセル

context.Contextを使用すると、アプリケーションの関数呼び出しとサービスは、処理が不要になった場合に早期に動作を停止してエラーを返すことができます。

接続の管理

一部の高度なプログラムでは、接続プールパラメーターを調整したり、接続を明示的に操作したりする必要がある場合があります。

SQLインジェクションリスクの回避

SQLパラメータ値をsqlパッケージの関数引数として提供することで、SQLインジェクションのリスクを回避できます

モジュールの開発

モジュールの開発と公開

関連するパッケージをモジュールに収集し、他の開発者が使用できるようにモジュールを公開できます。このトピックでは、モジュールの開発と公開の概要を示します。

モジュールのリリースとバージョン管理ワークフロー

他の開発者が使用するモジュールを開発するときは、モジュールを使用する開発者にとって信頼性が高く一貫したエクスペリエンスを確保するのに役立つワークフローに従うことができます。このトピックでは、そのワークフローの高レベルのステップについて説明します。

モジュールソースの管理

他の人が使用するために公開するモジュールを開発している場合、このトピックで説明されているリポジトリの規則に従うことで、モジュールを他の開発者がより使いやすくすることができます。

Goモジュールの編成

一般的なGoプロジェクトでファイルとディレクトリを整理する正しい方法は何ですか?このトピックでは、モジュールの種類に応じていくつかの一般的なレイアウトについて説明します。

メジャーバージョンアップデートの開発

メジャーバージョンアップデートは、破壊的な変更が含まれており、新しいモジュールを表すため、モジュールのユーザーにとって非常に混乱を招く可能性があります。このトピックで詳細をご覧ください。

モジュールの公開

モジュールを他の開発者が利用できるようにする場合は、Goツールから見えるように公開します。モジュールを公開すると、そのパッケージをインポートする開発者は、go getなどのコマンドを実行してモジュールへの依存関係を解決できるようになります。

モジュールバージョン番号

モジュールの開発者は、モジュールのバージョン番号の各部分を使用して、バージョンの安定性と下位互換性を示します。新しいリリースごとに、モジュールのリリースバージョン番号は、前のリリース以降のモジュールの変更の性質を具体的に反映します。

講演

Goのビデオツアー

Goを高速、楽しく、生産的にする3つのこと:インターフェース、リフレクション、並行処理。これらを実証するために、おもちゃのWebクローラーを構築します。

優雅に成長するコード

Goの主要な設計目標の1つは、コードの適応性です。つまり、単純な設計を簡単に取り入れて、クリーンで自然な方法でそれを基に構築できる必要があります。この講演では、Andrew Gerrandが、着信TCP接続のペアを一致させる単純な「チャットルーレット」サーバーについて説明し、Goの並行処理メカニズム、インターフェース、標準ライブラリを使用して、Webインターフェースやその他の機能で拡張します。プログラムの機能は劇的に変化しますが、Goの柔軟性は、成長するにつれて元の設計を保持します。

Go並行処理パターン

並行処理は、高性能ネットワークサービスを設計するための鍵です。Goの並行処理プリミティブ(ゴルーチンとチャネル)は、並行実行を表現するためのシンプルで効率的な手段を提供します。この講演では、トリッキーな並行処理の問題が、単純なGoコードでどのように優雅に解決されるかを見ていきます。

高度なGo並行処理パターン

この講演では、Go並行処理パターンの講演を拡張して、Goの並行処理プリミティブをさらに深く掘り下げます。

その他

詳細については、Go Talksサイトwikiページを参照してください。

コードウォーク

Goプログラムのガイド付きツアー。

言語

パッケージ

モジュール

ツール

Wiki

Goコミュニティによって維持されているGo Wikiには、Go言語、ツール、およびその他のリソースに関する記事が含まれています。

Wiki学習ページで、より多くのGo学習リソースを参照してください。

英語以外のドキュメント

Wiki非英語ページで、ローカライズされたドキュメントを参照してください。