【Go言語】 最初のプロジェクト作成 & Hello World
Goのプロジェクト作成とHello World実行
環境: Go言語 1.21.3, Mac OS 14.0 (Apple M2), Visual Studio Code 1.84.2
Go言語によるプロジェクト作成と、サンプルとしてHello Worldプログラムを実行する手順を解説します。
Go言語本体とVisual Studio Codeのインストール、セットアップについては前回のこちらの記事を参考にしてください。
プロジェクト用のモジュールを作成する
プロジェクトを作成するディレクトリを任意の場所に作成し、Visual Studio Code(以下、VSCode)で開いてください。
ここではプロジェクト名を「go-project1」としています。
ターミナルを開いてコマンドを実行します。
ディレクトリ作成
mkdir go-project1
ディレクトリへ移動
cd go-project1
次にプロジェクトのディレクトリ内でGoのモジュールを作成します。
go mod init go-project1
Go : モジュールとは
Go言語では1つのプロジェクトをモジュールという単位で表します。
モジュールの中ではさらにパッケージという単位で複数のソースコードのグループを管理します。
go mode initコマンドで、任意のモジュール名称を指定しますが、今回はわかりやすくプロジェクトのディレクトリと名称を合わせています。
コマンドを作成するとプロジェクト内に、go.modというモジュールファイルが作成されます。
モジュールファイルには、作成時に指定したモジュール名とGo言語のバージョンが記載されています。
main.goファイルの作成
次に、プロジェクト直下でGoの実行ファイルをmain.goという名称で作成します。
VSCodeでmain.goを作成し、以下のソースを記述してください。
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
1行目のpackageの指定について、Goではプログラムファイルを必ずどこかのパッケージに所属させる必要があります。
(パッケージとは複数のプログラムファイルを束ねるグループの単位のこと)
mainパッケージはモジュール作成時に自動的に作成されているパッケージとなります。
次にmain関数の定義ですが、Goではfuncというキーワードを使用して、関数を定義します。
(func mainとすることでmain関数を定義している)
Goではmain関数がアプリケーション内で初めに実行されるエントリーポイントになっています。
main関数内の、fmt.Printlnの記載ですが、
こちらはGoに標準で備わっているfmt(フォーマット)パッケージ内のPrintln関数を呼び出して実行しています。
package指定の下の※import文の記載によってfmtパッケージが使用できるようになっています。
※import文の記載はVSCodeのGo拡張機能が有効になっていると、
fmt.Printlnの記載時に自動的に挿入されるようにフォーマットがかかるようになっています。
fmt.Println関数の()内の引数でターミナルに出力するHello World文字列を指定しています。
プログラムを実行する
main.goのファイルが用意できたら、プログラムを実行していきます。
Go言語にはプログラムファイルを実行するために、プログラムをコンパイルしてから実行する方法と、
コンパイルと実行を同時に行う2つの方法が存在しますのでそれぞれ解説します。
1.コンパイルファイルを作成してから実行
ファイルをコンパイルするためにビルドという以下のコマンドを実行します。
go build main.go
コマンドを実行すると、拡張子のないmainという名称で※コンパイルされたファイルが作成されていますので、
こちらのファイルをピリオドとスラッシュを頭につけて実行します。
※ 機械語に翻訳されたバイナリと呼ばれる形式
(実行)
./main
Hello Worldがターミナルに出力されればOKです。
2. コンパイルと実行を同時に行う
次に先ほど行ったファイルのビルドと、プログラムの実行を同時に行います。
go run main.go
go runの後に元のmain.goをそのまま指定して実行します。
先ほどと同様、Hello Worldがターミナルに出力されていることを確認してください。
こちらの方法では先ほどのようにコンパイルファイルを生成することなく、プログラムを実行することができます。
“【Go言語】 最初のプロジェクト作成 & Hello World” に対して1件のコメントがあります。
コメントは受け付けていません。