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

2018年9月30日GoA Tour of Go,Goのお勉強,Go言語,ゼロ値,,変数Go,A Tour of 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言語のお勉強」インデックス

このシリーズについて

「A Tour of Go」を題材にした記事は現在書き直し中…。_(:3」∠)_
ほとんどサボりが原因で尻切れとなっていたシリーズですが、最近になってようやく続きを書きたくなり再開をしようと思ったんです。が、古い記事を見返すとデータ・フォーマットが古かったり内容が分かり難かったりに気づきまして、、、この際だからと最初の記事から書き直しをすることになりました…