今回から何回かに分けて公式サイトのチュートリアルを日本語訳していきます。
全11回、不定期掲載の予定です。


はじめに

このドキュメントはCまたはC++プログラマー向けに書かれたGo言語のチュートリアルです。Go言語の全般的なガイドではありません。現在のところ全般的なガイドに一番近い資料はlanguage specificationです。

このチュートリアルを読み終わったらEffective Goを読んでみてください。こちらにはもっと詳しく言語の活用の仕方が記載されています。またGo言語の3日間学習コースのスライドも合わせてご覧ください。(Day 1, Day 2, Day 3)

この資料では、一連のサンプルプログラムを通しGo言語の特色を明らかにしていきます。サンプルプログラムは記述された単位でコンパイル・実行可能です。またこれらサンプルプログラムは/doc/progs/リポジトリに格納されています。

サンプルプログラムは細切れになっています。行番号はオリジナルファイルの行番号付けられているため番号が飛び飛びになっていますが、空の行は空のままにしておいてください。 

Hello, World

おなじみのやつからはじめてみましょう。 

05    package main

07    import fmt "fmt"  // Package implementing formatted I/O.

09    func main() {
10        fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n");
11    }

packageステートメントを使ってこのGo言語ソースファイルがどのパッケージに属しているかを必ず宣言します。また、別のパッケージに含まれているものを使用するためにはimportステートメントを使います。このプログラムではfmt.Printfにアクセスするためfmtパッケージをインポートしています。

関数を記述するときは関数名の前にfuncキーワードを書きます。プログラムのメインパッケージ内のmain関数が、まず最初(初期化処理後)に実行されます。

文字定数にはUTF-8エンコードのユニコードを使うことができます。(Go言語のソースファイルはUTF-8エンコードと規定されている)

コメントの書き方はC++言語と同じです。 

    /* ... */
    // ...

出力についてはもっと後で説明します。 

コンパイル

Go言語はコンパイル言語です。現在2種類のコンパイラがあります。GccgoはGCCをバックエンドとするGo言語コンパイラです。
もう一方のコンパイラ群はアーキテクチャーごとに名前が付けられていて、6gは64ビットx86用、8gは32ビットx86用といった具合です。後者のほうはかなりコンパイル速度が速いのですが、吐き出されたコードはgccgoには劣ります。これを書いている今時点(2009年の終り)では後者のほうが実行できるシステムが多いのですが、gccgoもこれに追随しています。

 下に示すのがコンパイルとプログラム実行の手順です。これは6gを使用した例です。 

    $ 6g helloworld.go  # compile; object goes into helloworld.6
    $ 6l helloworld.6   # link; output goes into 6.out
    $ 6.out
    Hello, world; or Καλημέρα κόσμε; or こんにちは 世界
    $

gccgoを使った場合のほうが従来のやり方に近いです。

    $ gccgo helloworld.go
    $ a.out
    Hello, world; or Καλημέρα κόσμε; or こんにちは 世界
    $

今回はここまでです、いかがだったでしょうか。Go言語を少しでもなじんでいただければ幸いです。
それではまた次回をお楽しみに。