Go 言語でパッケージを自作して、それを呼び出してみる – その2
はじめに
前回のエントリでは greetings
というモジュール ( 正式名は genzouw/greetings
モジュール) を作成しました。
今回のエントリでは、別のモジュールから前回作成した greetings
モジュール内にある Hello
関数を呼び出してみます。
そのために、実行可能なアプリケーションモジュールを作成します。
ということで、もし前回のエントリが見れていない場合は、一読することをお勧めします!
コーディング開始!
それでは早速作成していきましょう。
1. ホームディレクトリ直下に hello
というディレクトリを作成
ディレクトリを作成した後は greetings
ディレクトリと hello
ディレクトリは同じ階層に並ぶはずです。
<home>/
|-- greetings/
|-- hello/
$ cd
$ mkdir hello
$ cd hello
2. モジュールフォルダを作成したら、いつものようにgo mod init
コマンドを実行
ここでもやはり、モジュール名は github のリポジトリ名をイメージして命名 しましょう。
$ go mod init genzouw/hello
go: creating new go.mod: module genzouw/hello
3. テキストエディタを開き、hello
ディレクトリの中に hello.go
というファイルを作成
もちろん好きなエディタで構いません。
例
$ vi hello.go
4. Hello
関数の呼び出し、戻り値を標準出力に出力するソースコードをコーディング
package main
import (
"fmt"
"genzouw/greetings"
)
func main() {
// Get a greeting message and print it.
message := greetings.Hello("genzouw")
fmt.Println(message)
}
ソースコードについて簡単に解説します。
- Go 言語 では、実行可能なアプリケーションモジュールは
main
という名前のパッケージにしなければいけません。 - 2 つのパッケージをインポートしています。
fmt
パッケージ- 中には入力情報と出力情報のテキストを色々な形に操作するための関数が含まれています。
genzouw/greetings
パッケージ- 中にある
Hello
関数を呼び出し、挨拶文を取得します。greetings
モジュールは前回のエントリで作成したモジュールですね。
- 中にある
5. genzouw/hello モジュールの設定を変更
自分の作業 PC の中にあるディレクトリの中のファイルを触ります。
自分で開発したモジュールは、多くの場合 Github リポジトリに公開することを想定していますgenzouw/hello
モジュールを実行する場合も、 Github リポジトリから genzouw/greetings
モジュールを検索しようとします
ただし、今回はちょっと状況が違います。自分の開発したモジュールは Github リポジトリ上で公開されているわけではありません。
作成したばかりでネット上に公開されていない genzouw/hello
モジュールの置き場ば、自分の PC のファイルシステムです。
Github リポジトリにはなく、自分の PC 内にあることを何らかの形で教えてあげなければいけません。
これを行うために go mod edit
コマンドを使います。
自分のローカル PC のファイルシステム内を探すように指定します。
$ go mod edit -replace=genzouw/greetings=../greetings
このコマンドによって genzouw/greetings
モジュールは ../greetings
ディレクトリに置かれていて、そこから取得するようになります。
コマンド実行後に genzouw/hello
モジュールディレクトリの go.mod
ファイルの中身を見てみましょう。replace
という単語から始まる命令が追加されています。
module genzouw/hello
go 1.16
replace genzouw/greetings => ../greetings
hello
ディレクトリ内で go.mod
ファイルに設定した内容に沿ってモジュールの登録を行ってみましょう。
こちらも以前登場したgo mod tidy
というコマンドを実行します。
このコマンドを実行して初めて go.mod
ファイルへの変更は意味を持ちます。
$ go mod tidy
go: found genzouw/greetings in genzouw/greetings v0.0.0-00010101000000-000000000000
コマンド実行後、 go.mod
ファイルは以下のようになります。(一番下の行が追加されています。)
module genzouw/hello
go 1.16
replace genzouw/greetings => ../greetings
require genzouw/greetings v0.0.0-00010101000000-000000000000
go mod tidy
コマンドを実行することで、 genzouw/greetings
モジュールをローカル PC の ../greetings
ディレクトリから探し見つかった結果として go.mod
に一行追記しています。
モジュールのパスに続く謎の数値は、擬似的なバージョン値になっています。genzouw/greetings
モジュールが Github リポジトリから見つかった場合、タグの値などを使って以下のような行が追記されます。
require genzouw/greetings v1.1.0
ひとまずはローカル開発中だけの値と理解しておくことにしました。
アプリケーション実行
それでは今回作成したアプリケーションモジュールを実行してみます。
こちらも何度も登場している、 main
パッケージ内の main
関数を呼び出すためのコマンドです。
( ファイル名を指定しても同じ結果になります。 )
$ go run .
Hi, genzouw. Welcome!
おめでとうございます!
これでついに、 「自作モジュールの作成」 と 「自作モジュールを利用するアプリケーションモジュール」 のコーディングができるようになりました。
ひとこと
次回は エラーハンドリング について学習していきます!
ディスカッション
コメント一覧
まだ、コメントがありません