チュートリアル: Goモジュールの作成
これは、Go言語のいくつかの基本的な機能を紹介するチュートリアルの最初の部分です。Goを始めたばかりの場合は、go
コマンド、Goモジュール、および非常に単純なGoコードを紹介するチュートリアル: Goを始めようをご覧ください。
このチュートリアルでは、2つのモジュールを作成します。1つ目は、他のライブラリやアプリケーションによってインポートされることを目的としたライブラリです。2つ目は、1つ目を使用する呼び出し元アプリケーションです。
このチュートリアルのシーケンスには、言語のさまざまな部分を示す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
はname
パラメーターの値を%v
フォーマット動詞に代入します。name
パラメーターの値を挿入すると、挨拶テキストが完成します。- フォーマットされた挨拶テキストを呼び出し元に返します。
- 関連する関数を収集するために、
次のステップで、別のモジュールからこの関数を呼び出します。