底辺技術者の備忘録とポエムと

IT関係の学習メモや妄想あるいは愚痴的な何かをつらつらと。

Goの世界よこんにちは。

昨日用意した環境を用いて、早速基本的なGo言語の学習に入ろうと思います。

こんにちは世界!

はじめに昔から慣例として存在しているHello Worldを、Go言語で行ってみます。任意の場所にhello_world.goというファイルを作成し、以下のようにコードを記述し保存します。

<hello_world.go>

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World")
}

ターミナルなどでファイルの保存してあるディレクトリに移動し、以下のようにファイルの実行を行います。

$ go run hello_world.rb
>> Hello World

(>>に続いて記載してある内容はプログラムの実行結果です。以後、プログラムなどの実行結果に続いて>>から始まる記載がある場合には、実行結果として読んで下さい。)

無事Go言語の最初のプログラム実行ができました。 実際のシステム開発で実装されるようなコードから見ると何の役にもたたないような小さいプログラムですが、Goでコーディングを行う際に必要ないくつかのことを提示してくれています。

Hello Worldに見るGoプログラムの決まりごと

  • プログラムは何かしらパッケージに属する必要がある。
  • パッケージの指定は package パッケージ名と記述する。
  • プログラムの開始の対象=エントリーポイントは、mainパッケージのmain関数である。
func main() {
  処理
}
  • プログラムで記載するために必要なパッケージを利用する場合、import宣言で明示的に指定する必要がある。
  • import 宣言はimport "パッケージ名"あるいは
    import (
     ”パッケージ名”
     ”パッケージ名”
     ”パッケージ名”
    )

プログラムの実行方法

先ほどの記述ではgo run hello_world.rbのようにプログラムを実行しました。このやり方の場合、goはimportに記載されているパッケージだけ読み込み、その場でビルドと実行を同時にしてくれます。ただし、プログラム全体がディレクトリに別れている場合など、きちんと実行ができないケースがあるため、そのような場合には、ビルド -> 実行のように分けるようにします。

Go言語でビルドを実行する場合にはgo buildを使います。ビルドを実行すると、実行可能なバイナリが作成されます。

実行前のディレクトリのファイルリスト

$ ls
hello_world.go 

ここで前述のbuildを実行します。

$ go build hello_world.go

実行後のディレクトリのファイルリスト

$ ls
hello_world           hello_world.go

hello_worldというバイナリファイルが作成されています。 このファイルを実行することで、先ほどのgo run の実行結果と同様の結果が得られます。

$ ./hello_world
Hello World

go buildの実行時にバイナリファイルのファイル名を指定することもできます。ビルド時にオプション-o ファイル名を指定することで、指定のファイル名でバイナリが書き出されます。試しに、「hello_go」 というバイナリファイルとして書き出すようにしてみます。

go build -o hello hello_world.go

オプション指定ビルド実行後のディレクトリのファイルリスト

$ ls
hello                 hello_world           hello_world.go

上記のような基本的な使い方以外に、go buildはクロスコンパイルなども可能ですが、詳細は必要になった場合改めて書くことにします。

次は、Goで利用するのとのできる基本的な型や変数、関数の基本などを学習して行きます。