[Windows で Go] Go で Hello, World する

20150228-01-go-catch

(この記事は「WindowsでGo」の第3回です)

ひとは、いったいいつまで同じ Hello, World を繰り返すのだろう…。 考えてみたら、ぼくは子どものころ K&R で Hello, World をやってから、 はやウン十年。言いたくない、振り返りたくない…。

ということで、いよいよ Windows 環境の Go で Hello, World のスクリプト を書いてみるぞなもし。

Hello, World スクリプトファイルを書く

とりあえずスクリプトファイルを何らかの方法で書く。

  1. コマンドプロンプトを開く
  2. コマンドラインで
    > copy con hello.go
    などとして hello.go ファイルの編集をはじめる。
    もちろん copy コマンドを使う苦行を味わいたくな い人はお好きなエディタでどうぞ
  3. ソースコードは以下のとおり:

  4. CTRL+Z するか保存してエディタを終了

なんかね。こうやってソース見ると、

  • 「Cっぽい?」
  • 「package mainなんてPerlと同じで暗黙の了解にすればいいのに」

とかいろいろ思いを馳せるものがあるね。

即実行してみる

さて、書いたスクリプトファイルを実行してみないとね。

Go はコンパイラ型言語だけど、前にも書いたように即実行もできる。 go コマンドから run サブコマンドを呼び出すという方法。 Windows 用に「.go拡張子がついていればこんなことしなくていい」 方法も書いたけど、今回はとりあえずやってみよう。

  1. 先ほどのコマンドプロンプトから
    > go run hello.go
    を実行
  2. Hello, world. と表示されれば成功

やったね、たえちゃん! うまく動いたよ!

宇宙刑事shebang

ところで、スクリプトファイルの先頭に書く、

みたいな「shebang」って、Go の場合どうするんだろう。

Go の shebang は珍妙だけれど、

と書く(もしかしたらBSD系だかなんだか、UNIXの種類によっては動かない かもしれない)。

もちろん Windows には関係ないんだけれども、スクリプトファイルとして のポータビリティを考えると、書いておくとうれしいだろう。

shebang も反映した先ほどのスクリプトファイルは以下のようになる。

GoogleがGoのコメントアウトに「#」を採用しなかったのと、 go run が単体コマンドとして提供されなかったのがこの 覚えづらい shebang につながっているわけだけれど。 まあ、覚えられるようになったら一行目に書きましょう。

バイナリをビルドする

まがりなりにも Go はコンパイル言語なので、突っ込まれる前に先ほどの スクリプトファイルからバイナリ(EXEファイル)をビルドしてみよう。 別にそう難しくない。

  1. 先ほどのコマンドプロンプトから
    go build hello.go
    を実行
  2. hello.exe ができあがっていれば成功

だ。

スクリプトが動いてさえいれば、一発で成功するでしょ。 なんだ、簡単じゃねえか。

ファイルサイズ2メガバイトくらいなんだけど、このバイナリはほかのWindows に持って行ってもすんなり動いてくれる。もちろん、スクリプトファイルと して動作させているのよりも速くね。ここらへん、当たり前なんだけど、 Perl だと PAR とか使わなきゃいけなかった(しかも構築がめんどうだった) のと比べると大きなアドバンテージやね。

ということで、気が向いたら次回以降はもうちょっと実用的なスクリプトを書いて みよう。