はじめに
Goのインストール
チュートリアル: はじめに
はじめにのための簡単なHello, Worldチュートリアル。Goのコード、ツール、パッケージ、モジュールについて少し学びます。
チュートリアル: モジュールの作成
関数、エラーハンドリング、配列、マップ、ユニットテスト、コンパイルを紹介する短いトピックのチュートリアル。
チュートリアル: マルチモジュールワークスペースの使い方
Goにおけるマルチモジュールワークスペースの作成と使用の基本を紹介します。マルチモジュールワークスペースは、複数のモジュールにまたがる変更を行うのに便利です。
チュートリアル: GoとGinを使ったRESTful APIの開発
GoとGin Webフレームワークを使用してRESTfulウェブサービスAPIを書く基本を紹介します。
チュートリアル: ジェネリクスの使い方
ジェネリクスを使用すると、呼び出しコードによって提供される任意の型のセットで動作するように書かれた関数や型を宣言して使用できます。
チュートリアル: ファジングの使い方
ファジングは、テストに対してエッジケースやセキュリティ問題をキャッチできる入力を生成することができます。
ウェブアプリケーションの作成
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)
エディタプラグインとIDE
Goサポートの一般的に使用されるエディタプラグインとIDEを要約した文書。
診断
Goプログラムの問題を診断するためのツールと方法論を要約します。
Goガベージコレクタのガイド
Goがメモリを管理する方法と、それを最大限に活用する方法を説明する文書。
依存関係の管理
コードが外部パッケージを使用する場合、それらのパッケージ(モジュールとして配布される)は依存関係になります。
ファジング
Goアプリケーションのカバレッジ
Goアプリケーションのカバレッジテストの主要なドキュメントページ。
プロファイルガイド最適化
Goアプリケーションのプロファイルガイド最適化(PGO)の主要なドキュメントページ。
参考文献
パッケージドキュメント
コマンドドキュメント
言語仕様
Goモジュールリファレンス
Goの依存関係管理システムに関する詳細なリファレンスマニュアル。
go.modファイルリファレンス
go.modファイルに含まれるディレクティブのリファレンス。
Goメモリモデル
あるゴルーチンで変数を読み取る条件を指定する文書で、別のゴルーチンで同じ変数に対する書き込みによって生成された値を観察できることが保証されます。
貢献ガイド
リリース履歴
Goリリース間の変更の概要。
データベースへのアクセス
チュートリアル: リレーショナルデータベースへのアクセス
Goと標準ライブラリのdatabase/sql
パッケージを使用してリレーショナルデータベースにアクセスする基本を紹介します。
リレーショナルデータベースへのアクセス
データベースハンドルのオープン
Goデータベースハンドルを使用してデータベース操作を実行します。データベース接続プロパティでハンドルを開くと、そのハンドルはあなたの代わりに管理する接続プールを表します。
データを返さないSQL文の実行
データベースを変更する可能性のあるSQL操作(SQL INSERT
、UPDATE
、DELETE
を含む)には、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の並行性メカニズム、インターフェース、標準ライブラリを使用してウェブインターフェースやその他の機能を追加します。プログラムの機能は劇的に変化しますが、Goの柔軟性は成長するにつれて元の設計を保持します。
Goの並行性パターン
並行性は、高性能ネットワークサービスを設計するための鍵です。Goの並行性プリミティブ(ゴルーチンとチャネル)は、並行実行を表現するためのシンプルで効率的な手段を提供します。このトークでは、複雑な並行性の問題をシンプルなGoコードで優雅に解決する方法を見ていきます。
高度なGoの並行性パターン
このトークは、Goの並行性パターンのトークを拡張し、Goの並行性プリミティブについてさらに深く掘り下げます。
その他
Go Talksサイトとウィキページで、さらに多くのGoトークを確認してください。
コードウォーク
Goプログラムのガイド付きツアー。
言語
- JSON-RPC: インターフェースの物語
- Goの宣言構文
- Defer、Panic、Recover
- Goの並行性パターン: タイムアウト、次に進む
- Goスライス: 使用法と内部
- GIFデコーダ: Goインターフェースの演習
- エラーハンドリングとGo
パッケージ
- JSONとGo - jsonパッケージを使用。
- 大量のデータ - gobパッケージの設計と使用。
- リフレクションの法則 - reflectパッケージの基本。
- Go画像パッケージ - imageパッケージの基本。
- Go画像/描画パッケージ - image/drawパッケージの基本。
モジュール
- Goモジュールの使用 - シンプルなプロジェクトでのモジュールの使用に関する紹介。
- Goモジュールへの移行 - 既存のプロジェクトをモジュールを使用するように変換。
- Goモジュールの公開 - 新しいバージョンのモジュールを他の人に提供する方法。
- Goモジュール: v2以降 - メジャーバージョン2以上の作成と公開。
- モジュールの互換性を維持 - モジュールを以前のマイナー/パッチバージョンと互換性を保つ方法。
ツール
- Goコマンドについて - なぜこれを書いたのか、何であるか、何でないか、そしてどのように使用するか。
- Goドキュメントコメント - 良いプログラムドキュメントを書く
- GDBを使用したGoコードのデバッグ
- データレース検出器 - データレース検出器のマニュアル。
- Goのアセンブラへのクイックガイド - Goで使用されるアセンブラの紹介。
- C? Go? Cgo! - cgoを使用してCコードにリンク。
- Goプログラムのプロファイリング
- Goレース検出器の紹介 - レース検出器の紹介。
ウィキ
Goウィキは、Goコミュニティによって維持され、Go言語、ツール、およびその他のリソースに関する記事を含んでいます。
ウィキの学ぶページで、さらに多くのGo学習リソースを確認してください。
非英語のドキュメント
ウィキの非英語ページで、ローカライズされたドキュメントを確認してください。
新しいウィンドウで開きます。