チュートリアル: Goモジュールを作成する
これは、Go言語のいくつかの基本的な機能を紹介するチュートリアルの最初の部分です。Goを始めたばかりの場合は、goコマンド、Goモジュール、および非常にシンプルなGoコードを紹介するチュートリアル: Goを始めるを必ずご覧ください。
このチュートリアルでは、2つのモジュールを作成します。1つ目は他のライブラリやアプリケーションによってインポートされることを意図したライブラリです。2つ目は最初のモジュールを使用する呼び出し側アプリケーションです。
このチュートリアルの流れには、言語の異なる部分をそれぞれ説明する7つの短いトピックが含まれています。
- モジュールを作成する -- 別のモジュールから呼び出すことができる関数を持つ小さなモジュールを作成します。
- 別のモジュールからコードを呼び出す -- 新しいモジュールをインポートして使用します。
- エラーを返し、処理する -- 簡単なエラー処理を追加します。
- ランダムな挨拶を返す -- スライス (Goの動的サイズ配列) でデータを処理します。
- 複数人への挨拶を返す -- キー/値のペアをマップに保存します。
- テストを追加する -- Goの組み込みの単体テスト機能を使用してコードをテストします。
- アプリケーションをコンパイルしてインストールする -- コードをローカルでコンパイルしてインストールします。
前提条件
- ある程度のプログラミング経験。 ここでのコードは非常にシンプルですが、関数、ループ、配列について知っていると役立ちます。
- コードを編集するためのツール。 どのテキストエディタでも問題なく動作します。ほとんどのテキストエディタはGoをうまくサポートしています。最も人気のあるものはVSCode(無料)、GoLand(有料)、Vim(無料)です。
- コマンドターミナル. Go は Linux および Mac の任意のターミナル、および Windows の PowerShell または cmd でうまく動作します。
他の人が使用できるモジュールを開始する
Goモジュールの作成から始めましょう。モジュールでは、関連する1つ以上のパッケージを、個別の有用な機能セットとしてまとめます。たとえば、金融アプリケーションを作成する他の人があなたの作業を使用できるように、金融分析を行うための関数を持つパッケージを含むモジュールを作成することができます。モジュールの開発の詳細については、モジュールの開発と公開を参照してください。
Goコードはパッケージにグループ化され、パッケージはモジュールにグループ化されます。モジュールは、Goのバージョンや必要な他のモジュールのセットなど、コードを実行するために必要な依存関係を指定します。
モジュールに機能を追加または改善すると、モジュールの新しいバージョンを公開します。モジュール内の関数を呼び出すコードを作成する開発者は、モジュールの更新されたパッケージをインポートし、本番環境で使用する前に新しいバージョンでテストできます。
- コマンドプロンプトを開き、ホームディレクトリに
cdします。LinuxまたはMacの場合
cd
Windowsの場合
cd %HOMEPATH%
- Goモジュールのソースコード用に
greetingsディレクトリを作成します。例えば、ホームディレクトリから以下のコマンドを使用します。
mkdir greetings cd greetings
go mod initコマンドを使用してモジュールを開始します。go mod initコマンドを実行し、モジュールパス(ここではexample.com/greetings)を指定します。モジュールを公開する場合、これはGoツールによってモジュールがダウンロードできるパスでなければなりません。それはあなたのコードのリポジトリになります。モジュールパスによるモジュールの命名の詳細については、依存関係の管理を参照してください。
$ go mod init example.com/greetings go: creating new go.mod: module example.com/greetings
go mod initコマンドは、コードの依存関係を追跡するためのgo.modファイルを作成します。今のところ、このファイルにはモジュールの名前とコードがサポートするGoのバージョンのみが含まれています。しかし、依存関係を追加すると、go.modファイルにはコードが依存するバージョンがリストされます。これにより、ビルドが再現可能になり、どのモジュールバージョンを使用するかを直接制御できます。- テキストエディタで、コードを記述するためのファイルを作成し、それをgreetings.goと名付けます。
- 以下のコードをgreetings.goファイルに貼り付け、ファイルを保存します。
package greetings import "fmt" // Hello returns a greeting for the named person. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }これはモジュールの最初のコードです。要求する呼び出し元に挨拶を返します。次のステップでこの関数を呼び出すコードを記述します。
このコードでは、以下のことを行います。
- 関連する関数をまとめるための
greetingsパッケージを宣言します。 - 挨拶を返す
Hello関数を実装します。この関数は、型が
stringであるnameパラメータを受け取ります。この関数はまた、stringを返します。Goでは、名前が大文字で始まる関数は、同じパッケージにない関数から呼び出すことができます。これはGoではエクスポートされた名前として知られています。エクスポートされた名前の詳細については、Goツアーのエクスポートされた名前を参照してください。
- 挨拶を保持するための
message変数を宣言します。Goでは、
:=演算子は、変数を1行で宣言および初期化するためのショートカットです(Goは右側の値を使用して変数の型を決定します)。長い方法では、次のように記述したかもしれません。var message string message = fmt.Sprintf("Hi, %v. Welcome!", name) fmtパッケージのSprintf関数を使用して、挨拶メッセージを作成します。最初の引数はフォーマット文字列であり、Sprintfは%vフォーマット動詞にnameパラメータの値を置き換えます。nameパラメータの値を挿入することで、挨拶文が完成します。- フォーマットされた挨拶文を呼び出し元に返します。
- 関連する関数をまとめるための
次のステップでは、この関数を別のモジュールから呼び出します。