# 2.1 こんにちは、Go アプリケーションを構築する前に、まず基本となるプログラムの書き方から始めます。建築の基礎を理解しないと家が建てられないように、基本的なプログラムを理解せずにはアプリケーションの構築もできません。そのため、本章では最も基本的な文法を学習し、Goプログラムを実行してみます。 ## プログラム 大半のプログラミング言語では、まず初めに`hello world`を出力するプログラムの書き方を学びます。 用意はいいですか?Let's Go! package main import "fmt" func main() { fmt.Printf("Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちはせかい\n") } 以下のように出力されます: Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちはせかい ## 説明 まず我々は、Goプログラムは`package`で構成されている、ということを理解する必要があります。 `package `(我々の例では`package main`)の1行は現在のファイルがどのパッケージの属しているかを表しています。またパッケージ`main`はこれ自体が独立して実行できるパッケージであることを示しています。コンパイル後実行可能ファイルが生成されます。`main`パッケージを除いて、他のパッケージは最後には`*.a`というファイルが生成され(パッケージファイルとも呼ばれます。)、`$GOPATH/pkg/$GOOS_$GOARCH`に出力されます。(Macでは`$GOPATH/pkg/darwin_amd64`になります。) >それぞれ独立して実行できるGoプログラムは必ず`package main`の中に含まれています。この`main`パッケージには必ずインターフェースとなる`main`関数が含まれます。この関数には引数がなく、戻り値もありません。 `Hello, world...`と出力するために、我々は`Printf`関数を用います。この関数は`fmt`パッケージに含まれるため、我々は3行目でシステム固有の`fmt`パッケージを導入しています:`import "fmt"`。 パッケージの概念はPythonのpackageに似ています。これには特別な利点があります:モジュール化(あなたのプログラムを複数のモジュールに分けることができます)と再利用性(各モジュールはすべて他のアプリケーションプログラムで再利用することができます)。ここではパッケージの概念を理解するにとどめ、あとで自分のパッケージを書くことにしましょう。 5行目では、キーワード`func`を通じて`main`関数を定義しています。関数の中身は`{}`(大括弧)の中に書かれます。我々が普段CやC++、Javaを書くのと同じです。 `main`関数にはなんの引数もありません。引数が存在する関数や、0個または複数の値を返す関数の書き方は後で学ぶことにしましょう。 6行目では、`fmt`パッケージに定義された`Printf`関数をコールします。この関数は`.`の形式でコールされます。この点はPythonとよく似ています。 >上述の通り、パッケージ名とパッケージが存在するディレクトリは異なっていてもかまいません。ここでは``がディレクトリ名ではなく`package `で宣言されるパッケージ名とします。 最後に、出力した内容には多くの非ASCIIコードが含まれていることにお気づきかもしれません。実際、Goは生まれながらにしてUTF-8をサポートしており、いかなる文字コードも直接出力することができます。UTF-8の中の任意のコードポイントを識別子にしても構いません。 ## 結論 Goは`package`(Pythonのモジュールに似ています)を使用してコードを構成します。`main.main()`関数(この関数は主にメインパッケージにあります)は個別に独立した実行可能プログラムのインターフェースになります。GoはUTF-8文字列と識別子(なぜならUTF-8の発明者もGoの発明者と同じだからです。)を使用しますので、はじめから多言語サポートを有しています。 ## links * [目次]() * 前へ: [Go言語の基礎](<02.0.md>) * 次へ: [Goの基礎](<02.2.md>)