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