Go言語で外部パッケージの関数を呼び出す

他のエンジニアが作られた関数を外部パッケージとして読み込み、自分のコードから呼び出す

前回の続きからの内容となります。ぜひ前回学習した内容を一読しておいてください!

今回は "Hello world" と表示していた挨拶文を、別の関数( 外部パッケージの関数 )を使って生成させてみたいと思います。

  1. pkg.go.dev というサイトを開き "quote" というモジュールを検索します。
  2. 検索結果から rsc.io/quote というモジュールを探してクリックします
  3. Documentation セクションを探しましょう。
    • ここに "quote" ""モジュールに含まれている関数が一覧表示されているはずです。
    • 書かれている関数は、このパッケージが提供されてしているものです。自分のコードから呼び出すことが可能です。
  4. ページの一番上には rsc.io/quote というモジュールの中に "quote" パッケージが含まれていると書かれています

pkg.go.dev サイトでは多くのモジュールが公開されています。
モジュールで提供されている関数は、自分のコードから自由に呼び出すことができます。

モジュールが時間と共に新しいバージョンが公開されていきます。

追従するために、 go コマンドを使ってアップグレードを行うことが可能です。

前回作成したコードから rsc.io/quote と言うパッケージをインポートして、関数を呼び出してみる

以下のようにパッケージのインポートと関数の呼び出し処理を追記します。

package main

import "fmt"

import "rsc.io/quote"

func main() {
    fmt.Println(quote.Go())
}

新しく追加したモジュールを要求する

必須ライブラリのリストに rsc.io/quote モジュールを追加します。
PHPRuby といった他言語のライブラリ管理ツール( Composer / Gem )とは異なり、設定ファイルに自分で追記する必要はないようです。

以下のコマンドを実行する事で go.mod ファイルに、ソースコードでインポートしているパッケージを自動で探し出し、追記する仕組みになっているようです。とても便利!

$ go mod tidy
go: finding module for package rsc.io/quote
go: downloading rsc.io/quote v1.5.2
go: found rsc.io/quote in rsc.io/quote v1.5.2
go: downloading rsc.io/sampler v1.3.0
go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c

ちなみにインポートしているモジュールがダウンロードされるタイミングは、メッセージからもわかると思いますが go mod tidy コマンド実行したタイミングです。

go.mod ファイルを見ると、一行追記されていました。

$ cat go.mod
module genzouw/hello

go 1.16

require rsc.io/quote v1.5.2

モジュールがどこのフォルダに配置されたかは現時点では僕も把握していないので、また学習を進めていって分かったら紹介します。

実行し、外部モジュールによってメッセージが生成されていることを確認

前回と同様に実行コマンドを入力します。

$ go run .
Don't communicate by sharing memory, share memory by communicating.

これで、本当に基本的なコーディングはできるようになりました!

Go 言語 のシンタックスはまだ把握していませんがおそらく他の言語と大きな大差はないでしょう。

次回は Go のモジュールを自作する というチュートリアルを進めていきます。

Posted by genzouw