ドキュメント
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
バイナリがGOPATHのbin
ディレクトリに配置されます。
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 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つのこと:インターフェース、リフレクション、並行処理。これらを実証するために、おもちゃのWebクローラーを構築します。
優雅に成長するコード
Goの主要な設計目標の1つは、コードの適応性です。つまり、単純な設計を簡単に取り入れて、クリーンで自然な方法でそれを基に構築できる必要があります。この講演では、Andrew Gerrandが、着信TCP接続のペアを一致させる単純な「チャットルーレット」サーバーについて説明し、Goの並行処理メカニズム、インターフェース、標準ライブラリを使用して、Webインターフェースやその他の機能で拡張します。プログラムの機能は劇的に変化しますが、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パッケージの使用。
- Gobs of data - gobパッケージの設計と使用。
- リフレクションの法則 - reflectパッケージの基礎。
- Go imageパッケージ - imageパッケージの基礎。
- Go image/drawパッケージ - image/drawパッケージの基礎。
モジュール
- Goモジュールの使用 - 簡単なプロジェクトでのモジュールの使用の紹介。
- Goモジュールへの移行 - 既存のプロジェクトをモジュールを使用するように変換。
- Goモジュールの公開 - 他の人が利用できるようにモジュールの新しいバージョンを作成する方法。
- Goモジュール:v2以降 - メジャーバージョン2以降の作成と公開。
- モジュールの互換性を維持する - モジュールを以前のマイナー/パッチバージョンと互換性を維持する方法。
ツール
- Goコマンドについて - なぜそれを書いたのか、それが何なのか、何でないのか、そしてそれを使う方法。
- Goドキュメントコメント - 優れたプログラムドキュメントの作成
- GDBを使用したGoコードのデバッグ
- データレース検出器 - データレース検出器のマニュアル。
- Goのアセンブラへの簡単なガイド - Goで使用されるアセンブラの紹介。
- C? Go? Cgo! - cgoを使用してCコードにリンクします。
- Goプログラムのプロファイリング
- Goレース検出器の紹介 - レース検出器の紹介。
Wiki
Goコミュニティによって維持されているGo Wikiには、Go言語、ツール、およびその他のリソースに関する記事が含まれています。