Goのプログラムは、パッケージ( package )で構成されます。
プログラムは main パッケージから開始されます。
規約で、パッケージ名はインポートパスの最後の要素と同じ名前になります。 例えば、インポートパスが "math/rand" のパッケージは、 package rand ステートメントで始まるファイル群で構成します。
Goでは、最初の文字が大文字で始まる名前は、外部のパッケージから参照できるエクスポート(公開)された名前( exported name )です。
関数は、0個以上の引数を取ることができます。
この例では、 add 関数は、 int 型の2つのパラメータを取ります。
変数名の 後ろ に型名を書くことに注意してください。
x int, y int
を
x, y int へ省略可能
関数は複数の戻り値を返すことができます。
func swap(x, y string) (string, string) {
return y, x
}
Goの
Named return value
Goでは、関数の戻り値に名前をつけて変数として利用することができます。
この仕組みをNamed return valueといいます。
func func3(x, y int) (add, sub int) {
add = x + y
sub = x - y
return
}
func main() {
x, y := func3(10, 5)
fmt.Println(x)
fmt.Println(y)
}
add sub という名前付き戻り値で値を返しています。
・var ステートメントは変数( variable )を宣言します。 関数の引数リストと同様に、複数の変数の最後に型を書くことで、変数のリストを宣言できます。
・var 宣言では、変数毎に初期化子( initializer )を与えることができます。
・関数の中では、 var 宣言の代わりに、短い := の代入文を使い、暗黙的な型宣言ができます。
なお、関数の外では、キーワードではじまる宣言( var, func, など)が必要で、 := での暗黙的な宣言は利用できません。
・変数に初期値を与えずに宣言すると、ゼロ値( zero value )が与えられます。
ゼロ値は型によって以下のように与えられます:
- 数値型(int,floatなど): 0
- bool型: false
- string型: "" (空文字列( empty string ))
・型変換
変数 v 、型 T があった場合、 T(v) は、変数 v を T 型へ変換します。