A Tour of Go をやる! – その13 「Zero values」 生まれ持った中身は? 【Go言語/A Tour of Go】

2018年9月30日Go言語のお勉強A Tour of Go,Goのお勉強,Go言語,ゼロ値,,変数Go言語のお勉強,Goのお勉強,Go言語,ゼロ値,,変数

記事ヘッダー_Zero_values

「A Tour of Go をやる!」シリーズの第13回目。
まだまだ続くぞ変数回。というわけで今回は宣言したての変数のお話。

今回進めるページ「Basic types」

今回進める「A Tour of Go」のページはこちら。

タイトルの「Zero values」とは?

宣言して直ぐの変数にはゼロ値が与えられます。の「ゼロ値」のことです。

言語仕様の確認

さて言語仕様を見てみます。

When storage is allocated for a variable, either through a declaration or a call of new, or when a new value is created, either through a composite literal or a call of make, and no explicit initialization is provided, the variable or value is given a default value. Each element of such a variable or value is set to the zero value for its type: false for booleans, 0 for numeric types, “" for strings, and nil for pointers, functions, interfaces, slices, channels, and maps. This initialization is done recursively, so for instance each element of an array of structs will have its fields zeroed if no value is specified.

宣言またはnewの呼び出しによって変数にストレージが割り当てられた場合、または複合リテラルまたはmakeの呼び出しによって新しい値が作成され、明示的な初期化が提供されていない場合、変数または値が指定されます。デフォルト値。このような変数または値の各要素は、その型がゼロ値に設定されます。ブール型の場合はfalse、数値型の場合は0、文字列の場合は「」、ポインタ、関数、インターフェイス、スライス、チャネル、およびマップの場合はnilです。この初期化は再帰的に行われるため、たとえば、値が指定されていない場合、構造体の配列の各要素のフィールドはゼロになります。(by Google Translated.)

https://golang.org/ref/spec#The_zero_value

引用した文章を読んでみると、宣言時に初期化されなかった変数にはゼロ値が詰められるようです。そしてゼロ値は型によって値が変わり、それぞれ型ごとに次の値が詰められるようです。

それぞれの型に適用されるゼロ値(Zero values)

ゼロ値
boolfalse
int, uint, float, complex0
string“" (空文字)
* (Pointers), func, interface, [] (Slices), chan, mapnil

サンプルプログラムを見てみる。

じゃ「Zero values」のサンプルプログラムを見てみます。
お題に関係する箇所にはコメント打ってます。

処理の内容は、各種型を割り当てた変数を宣言し、中身を出力するだけのプログラム。
実行結果を確認すると、言語仕様に記載の合った通りの値が詰まっていることが確認できる。

さいごに

今回は初期化しなかった変数のデフォルト値を知ることが出来ました。
ん~内容が薄いよう~。(;´∀`)

んではまた次回~٩( 'ω’ )و

Go言語のお勉強 記事一覧

  1. うっしー「Go」に手を出す…
  2. 「A Tour of Go」をやる! シリーズ
    1. その1 「Hello, 世界」
    2. その2 「Packages」だってさ~
    3. その3 「Imports」いんぽーっ!
    4. その4 「Exported names」見えますか?
    5. その5 「Functions」 これは機能です。
    6. その6 「Functions continued」(?) 型しょ~略っ!
    7. その7 「Multiple results」 一粒で二度美味しい?
    8. その8 「Named return values」 お前は戻り値だ…
    9. その9 「Variables」入れ物!
    10. その10 「Variables with initializers」砂でも詰めるか…
    11. その11 「Short variable declarations」 略パート2!
    12. その12 「Basic types」 型抜きってあったな…
    13. その13 「Zero values」 生まれ持った中身は?
    14. その14 「Type conversions」 1は1.0になれる!

「A Tour of Go」記事は現在書き直し中…。_(┐「ε:)_
サボったりサボったり…で尻切れシリーズになっていましたが、最近続きを書く気になりました。が、これまでの記事を改めて見返すと記事のデータ・フォーマットが古く、この際だからと最初の記事から書き直しております。