演習1-0

ディスプレーの1行目に"Hello, World!",2行目に"こんにちは、世界。"と表示するプログラムを作成せよ.

解答例

  1. package main
  2. import "fmt" // 入出力フォーマットを実装したパッケージをインポート
  3. func main() {
  4. fmt.Printf("Hello, World!\n")
  5. fmt.Printf("こんにちは、世界。\n")
  6. }

解説

1行目

  • package mainはパッケージ節です.詳細は言語仕様 http://golang.jp/go_spec#Packages
  • パッケージはGoプログラムの構成要素で,Goプログラムは一つ以上のパッケージをリンクして作られます.各パッケージでは,そのパッケージに属する定数,型,変数,関数を記述します.この例では,一つのファイルにmainという関数だけを記述しています.一つのパッケージを複数のファイルに分けて記述することもできます.
  • ソースファイルはパッケージ節で始まり,そのファイルが属するパッケージを定めます.この例ではpackage mainがパッケージ節で,このファイルがmainパッケージに属することを定めています.
  • ソースファイルはUTF-8エンコードでなければなりません.
  • プログラムは,mainパッケージ内のmain関数から実行されます.main関数から抜けるとプログラムは終了します.プログラムは必ずmainパッケージとmain関数を持たなければなりません.

3行目

  • 別のパッケージに含まれている関数や型や定数などを利用するためには,import文を用います.詳細は言語仕様 http://golang.jp/go_spec#Packages
  • このプログラムではfmtパッケージをインポートしています.
  • fmtは入出力フォーマットを実装したGo言語の標準パッケージで,C言語のprintfおよびscanfと似た関数をもちます.fmtパッケージの詳細は,http://golang.jp/pkg/fmt
  • コメントはC言語と同じです.

5行目

  • この行からmain関数の記述です.関数の記述には,func というキーワードを用います.main関数には引数も戻り値もありません.

6行目

  • fmt.Printfのようにパッケージ名を指定して,fmtパッケージに定義されている関数Printfを呼び出しています.
  • Printfは指定されたフォーマットに従い,引数をフォーマットして標準出力に書き込みます.

7行目

  • 文字リテラルにはUTF-8エンコードのUnicodeを使います.(変数名や関数名にもUnicodeを使うことができます.したがって,漢字の変数名や関数名を使うことができます.)

セミコロン

  • Go言語では,文の終わりにセミコロンは不要です.
  • 実際にはCやJavaなどと同様の扱いですが,文の終わりとみなせる全ての行末にセミコロンが自動的に挿入されるため,セミコロンを入力する必要はありません.