Go Lang でモジュールを作成し、それをMainパッケージで使用する
呼び出したいモジュールを作成する
まずは利用するgreetingsモジュールを作成する。
上記を実行する。
というメッセ―ジとともに、go.modが作成される。
ちなみにコマンドに記入した\example.com‘はドメイン名ではGo ツールによってモジュールをダウンロードできるパスになるっぽいらしいけれど、よくわからない。
次にgreetings.goというファイルを作成し、
上記のように記入する。
これでパッケージは作成できた。
mainのパッケージを作成する
次にこれを呼び出していく。
先ほど作成したgreetingsモジュールが格納されているフォルダと同階層にhelloフォルダを作成する
今までの通りモジュールを作成する。
ドメインは必須じゃないということだったので、省略してみたが、無事に作成することができた。
次に、hello.goにコードを記載していく。
このコードではmainパッケージを宣言している。Goではアプリケーションとして実行されるコードはmainパッケージ内に存在する必要があるらしい。
以下、Chat-GPTのよると
Go言語における main パッケージは、実行可能なプログラムを定義する特別なパッケージです。
具体的には以下の特徴があります:
- エントリーポイント:
- main パッケージ内の func main() が、プログラムのエントリーポイント(起動点)となります。この関数が最初に呼び出されます。
- 実行可能ファイルの生成:
- main パッケージを含むプログラムは、go build コマンドを使って実行可能なバイナリファイルにコンパイルできます。
- 単独実行可能ファイル:
- main パッケージを持つプログラムは、単体で実行可能なプログラムとして使われます。
- 必要なパッケージのインポート:
- main パッケージは他のパッケージをインポートできます。これによって、他のパッケージの機能を利用することができます。
- mainパッケージ以外のパッケージには必要ない要素:
- main パッケージ以外のパッケージは、エントリーポイントとなる func main() を持つ必要はありません。
例えば、以下は main パッケージの例です:
このプログラムは main パッケージであり、func main() 関数が定義されています。このプログラムは fmt パッケージをインポートし、コンソールに "Hello, World!" と出力します。
main パッケージを持つプログラムは、通常、Go言語で実行可能なプログラムとしてビルドされます。
関数の方ではexample.com/greetingsのHello関数を呼び出し、使用している。
そのうえで、go mod tidyでモジュールを最新化する。
実際の運用ではリポジトリからモジュールを 公開しimportして使用するのだが、greetingsモジュールをまだ公開していないためexample.com/greetingsをローカルで見つかられるように調整する必要がある。
調整するためには下記のコマンドを叩く必要がある。
このコマンドでモジュール パス をローカルパスにリダイレクトするようにhelloモジュールが編集される。
次にgo mod tidy`でモジュールを最新化する。
VSCodeでエラーが出ているけれど、実行すると
無事に動いていることが確認できた。
Discussion in the ATmosphere