しおブロ!

ITの知見や備忘録、レビューなど。しおぽん(shiopon01)のブログ

Golang ことはじめ

Golangはシンプルな言語仕様であり、習得が比較的容易な言語だ。
非知的なプログラマのためにデザインされており、プログラムを無意味に複雑にしてしまう機能は削除されている。 (継承やGenerics、for以外のループなどが削除されている)

サンプルコード

package main

import f "fmt"

func main () {
  f.Printf ("HELLO\n")
}

このソースコードをbuildすると、期待通り HELLO が出力される。

$ go build main.go && ./main
HELLO

ここで行っていることは、パッケージ節でのこのファイルが属するパッケージを指定、入出力フォーマットを実装した fmtパッケージ のインポート、main関数で Print 関数を使用した出力だけだ。

package

Go言語のプログラムは、複数のパッケージをひとつにリンクすることによって作られる。また、各パッケージは、そのパッケージに属する定数、型、変数、関数を定義しているひとつ以上のソースファイルから構成される。

Go言語のプログラムは、 mainパッケージ と呼ばれる、他からインポートされることがないパッケージをリンクすることで完成する。事実上、このmainパッケージから全てのパッケージが直接的・間接的にインポートされることになる。
mainパッケージは、パッケージ名を main にし、引数と戻り値を持たない main関数 を宣言していなければならない。

package main

func main () { ... }

プログラムの実行はmainパッケージを初期化した後、main関数を実行することで開始される。main関数を抜けた時点でプログラムは終了する。

import

インポート宣言では、他のパッケージを読み込むことができる。

import f "fmt"

インポートするパッケージにはエイリアスを付けることができ、ここでは f"fmt" パッケージのエイリアスとして利用している。パッケージと同名で利用する場合はエイリアスが必要なく、エイリアス名を省略した場合はソースコード内で fmt.Print などとして利用できる。

func main

Go言語の関数の定義には func キーワードが利用され、mainはGo言語の関数として定義される。

main関数にコマンドライン引数を渡したい場合、先述のようにmain関数に引数を渡すことは出来ないが、この場合は os パッケージや、 flag パッケージを利用することで受け取ることが出来る。

main以外の関数を自由に定義することも可能で、この場合は引数や戻り値を定義することができる。

参考