ドキュメント
Go プログラミング言語は、プログラマーの生産性を向上させるためのオープンソースプロジェクトです。
Go は表現力豊かで、簡潔、クリーン、そして効率的です。その並行処理メカニズムにより、マルチコアマシンやネットワーク化されたマシンを最大限に活用するプログラムを簡単に記述でき、その斬新な型システムは柔軟でモジュール式のプログラム構築を可能にします。Go は機械語に素早くコンパイルされますが、ガベージコレクションの利便性とランタイムリフレクションの強力さを兼ね備えています。高速で静的型付けされたコンパイル言語でありながら、動的型付けされたインタプリタ型言語のように感じられます。
はじめに
Go のインストール
Go のダウンロードとインストールの手順。
チュートリアル: はじめに
簡単な「Hello, World」チュートリアルで始めましょう。Go のコード、ツール、パッケージ、モジュールについて少し学びます。
チュートリアル: モジュールの作成
関数、エラー処理、配列、マップ、単体テスト、コンパイルを紹介する短いトピックのチュートリアル。
チュートリアル: マルチモジュールワークスペースの開始
Go でマルチモジュールワークスペースを作成して使用する基本を紹介します。マルチモジュールワークスペースは、複数のモジュール間で変更を加えるのに役立ちます。
チュートリアル: Go と Gin で RESTful API を開発する
Go と Gin Web Framework を使用して RESTful Web サービス API を記述する基本を紹介します。
チュートリアル: ジェネリクスを始める
ジェネリクスを使用すると、呼び出し元コードによって提供される一連の型のいずれかと連携するように記述された関数や型を宣言して使用できます。
チュートリアル: ファジングを始める
ファジングは、見落とす可能性のあるエッジケースやセキュリティの問題を検出できるテストへの入力を生成できます。
Web アプリケーションの記述
シンプルな Web アプリケーションの構築。
Go コードの記述方法
このドキュメントでは、モジュール内でシンプルな Go パッケージのセットを開発する方法と、go コマンドを使用してパッケージをビルドおよびテストする方法を説明しています。
Go ツアー
Go のインタラクティブな入門書、4つのセクション。最初のセクションでは基本的な構文とデータ構造を扱い、2番目のセクションではメソッドとインターフェースについて説明し、3番目のセクションではジェネリクスについて、4番目のセクションでは Go の並行処理プリミティブを紹介します。各セクションの最後には、学んだことを練習するためのいくつかの演習があります。オンラインでツアーを受講するか、以下でローカルにインストールできます。
$ go install golang.org/x/website/tour@latest
これにより、tour バイナリが GOPATH の bin ディレクトリに配置されます。
Go の使用と理解
効果的なGo
明確で慣用的な Go コードを記述するためのヒントを提供するドキュメントです。Go の新規プログラマーは必読です。ツアーと言語仕様を補足するもので、どちらも最初に読む必要があります。
よくある質問 (FAQ)
Goに関する一般的な質問への回答。
エディタプラグインと IDE
Go をサポートする一般的に使用されるエディタプラグインと IDE をまとめたドキュメント。
Diagnostics
Go プログラムの診断ツールと方法論をまとめました。
Go ガベージコレクタのガイド
Go がメモリをどのように管理し、それを最大限に活用する方法を説明するドキュメント。
依存関係の管理
コードが外部パッケージを使用する場合、それらのパッケージ(モジュールとして配布される)は依存関係になります。
ファジング
Go ファジングの主要なドキュメントページ。
Go アプリケーションのカバレッジ
Go アプリケーションのカバレッジテストに関する主要なドキュメントページ。
プロファイルガイド付き最適化
Go アプリケーションのプロファイルガイド付き最適化 (PGO) に関する主要なドキュメントページ。
参考文献
パッケージドキュメント
Go 標準ライブラリのドキュメント。
コマンドドキュメント
Go ツールに関するドキュメント。
言語仕様
公式の Go 言語仕様。
Go モジュールリファレンス
Go の依存関係管理システムに関する詳細なリファレンスマニュアル。
go.mod ファイルリファレンス
go.mod ファイルに含まれるディレクティブのリファレンス。
Go メモリモデル
あるゴルーチンでの変数の読み取りが、異なるゴルーチンでの同じ変数への書き込みによって生成された値を確実に観察できる条件を規定するドキュメント。
貢献ガイド
Go への貢献。
リリース履歴
Go リリース間の変更点の概要。
データベースへのアクセス
チュートリアル: リレーショナルデータベースへのアクセス
Go と標準ライブラリの database/sql パッケージを使用してリレーショナルデータベースにアクセスする基本を紹介します。
リレーショナルデータベースへのアクセス
Go のデータアクセス機能の概要。
データベースハンドルのオープン
Go データベースハンドルを使用してデータベース操作を実行します。データベース接続プロパティでハンドルをオープンすると、ハンドルはあなたに代わって管理する接続プールを表します。
データを返さない SQL ステートメントの実行
SQL INSERT、UPDATE、DELETE を含む、データベースを変更する可能性のある SQL 操作には、Exec メソッドを使用します。
データのクエリ
クエリからデータを返す SELECT ステートメントには、Query または QueryRow メソッドを使用します。
プリペアドステートメントの使用
繰り返し使用するためにプリペアドステートメントを定義すると、コードがデータベース操作を実行するたびにステートメントを再作成するオーバーヘッドを回避できるため、コードの実行が少し速くなります。
トランザクションの実行
sql.Tx は、Commit や Rollback を含むトランザクション固有のセマンティクスを表すメソッドや、一般的なデータベース操作を実行するために使用するメソッドを公開します。
進行中のデータベース操作のキャンセル
context.Context を使用すると、アプリケーションの関数呼び出しやサービスが、処理が不要になったときに早期に動作を停止し、エラーを返すことができます。
接続の管理
一部の高度なプログラムでは、接続プールパラメータを調整したり、接続を明示的に操作したりする必要がある場合があります。
SQL インジェクションのリスクの回避
SQL パラメータ値を sql パッケージの関数引数として提供することで、SQL インジェクションのリスクを回避できます。
モジュールの開発
モジュールの開発と公開
関連するパッケージをモジュールにまとめ、他の開発者が使用できるようにモジュールを公開できます。このトピックでは、モジュールの開発と公開の概要を説明します。
モジュールリリースとバージョン管理のワークフロー
他の開発者が使用するモジュールを開発する場合、モジュールを使用する開発者に信頼性と一貫性のあるエクスペリエンスを保証するのに役立つワークフローに従うことができます。このトピックでは、そのワークフローの主なステップについて説明します。
モジュールソースの管理
他のユーザーが使用するためにモジュールを公開する場合、このトピックで説明されているリポジトリ規則に従うことで、他の開発者がモジュールをより簡単に使用できるようにすることができます。
Go モジュールの整理
一般的な Go プロジェクトのファイルとディレクトリを整理する正しい方法は何ですか?このトピックでは、モジュールの種類に応じたいくつかの一般的なレイアウトについて説明します。
メジャーバージョンアップの開発
メジャーバージョンアップは、破壊的変更を含み、新しいモジュールを表すため、モジュールのユーザーに大きな影響を与える可能性があります。このトピックで詳細を確認してください。
モジュールの公開
他の開発者がモジュールを利用できるようにしたい場合は、Go ツールに表示されるようにモジュールを公開します。モジュールを公開すると、そのパッケージをインポートする開発者は、go get などのコマンドを実行してモジュールへの依存関係を解決できるようになります。
モジュールバージョン番号付け
モジュールの開発者は、モジュールのバージョン番号の各部分を使用して、バージョンの安定性と後方互換性を示します。新しいリリースごとに、モジュールのリリースバージョン番号は、以前のリリースからのモジュールの変更の性質を具体的に反映します。
トーク
Go のビデオツアー
Go を高速、楽しく、生産的にする3つのこと: インターフェース、リフレクション、並行処理。これらを実証するために、おもちゃのウェブクローラーを構築します。
優雅に成長するコード
Go の主要な設計目標の1つはコードの適応性です。それは、シンプルな設計を簡単かつクリーンで自然な方法で構築できること。この講演で、Andrew Gerrand は、着信 TCP 接続のペアを照合するシンプルな「チャットルーレット」サーバーを説明し、Go の並行処理メカニズム、インターフェース、標準ライブラリを使用して、Web インターフェースやその他の機能で拡張する方法を示します。プログラムの機能は劇的に変化しますが、Go の柔軟性により、元の設計は成長しながらも維持されます。
Go 並行処理パターン
並行処理は、高性能ネットワークサービスを設計するための鍵です。Go の並行処理プリミティブ (ゴルーチンとチャネル) は、並行実行を表現するためのシンプルで効率的な手段を提供します。この講演では、複雑な並行処理の問題をシンプルな Go コードで優雅に解決する方法を見ていきます。
高度な Go 並行処理パターン
この講演は、Go 並行処理パターンの講演を拡張し、Go の並行処理プリミティブをより深く掘り下げます。
詳細
他の Go 講演については、Go Talks サイトとwiki ページを参照してください。
コードウォーク
Go プログラムのガイド付きツアー。
言語
- JSON-RPC: インターフェースの物語
- Go の宣言構文
- Defer、Panic、および Recover
- Go 並行処理パターン: タイムアウト、次に進む
- Go スライス: 使用法と内部構造
- GIF デコーダー: Go インターフェースの演習
- エラー処理と Go
パッケージ
- JSON と Go - json パッケージの使用。
- 大量のデータ - gob パッケージの設計と使用。
- リフレクションの法則 - reflect パッケージの基礎。
- Go image パッケージ - image パッケージの基礎。
- Go image/draw パッケージ - image/draw パッケージの基礎。
モジュール
- Go モジュールの使用 - シンプルなプロジェクトでモジュールを使用するための入門。
- Go モジュールへの移行 - 既存のプロジェクトをモジュールを使用するように変換する。
- Go モジュールの公開 - モジュールの新しいバージョンを他のユーザーに提供する方法。
- Go モジュール: v2 以降 - メジャーバージョン 2 以降の作成と公開。
- モジュールを互換性のある状態に保つ - モジュールを以前のマイナー/パッチバージョンと互換性のある状態に保つ方法。
ツール
- Go コマンドについて - なぜ作成したのか、何なのか、何ではないのか、そしてどう使うのか。
- Go Doc コメント - 優れたプログラムドキュメントの記述
- GDB を使用した Go コードのデバッグ
- データ競合検出器 - データ競合検出器のマニュアル。
- Go のアセンブラクイックガイド - Go が使用するアセンブラの紹介。
- C? Go? Cgo! - cgo を使用した C コードへのリンク。
- Go プログラムのプロファイリング - コードの CPU とメモリ使用量を測定するツール。
- Go 競合検出器の紹介 - 競合検出器の紹介。
- Gopls: Go の言語サーバー - Go で作業する際にエディタを最大限に活用する。
Wiki
Go コミュニティが管理するGo Wikiには、Go 言語、ツール、その他のリソースに関する記事が含まれています。