【Go言語】型を推理する? Type inference

2018年10月3日GoGo言語,変数Go,変数

今進めている「Packages, variables, and functions.」ですが、ようやく終りが見えてきましたね。

今回を含めあと4ページ…、つまりあと4回で終わる予定です!(・∀・)ナガカッタ

つーわけで、今回も「Go」の「A Tour of Go」を進めていきましょーか。

今回のお題は「Type inference」だってね

ずーっと変数絡みの内容が続いてますが、今回も同じっぽいですね~。

どういう内容でしょうかね?

お題のページね

とりあえずお題のページはこちら。(´・ω・)つhttps://go-tour-jp.appspot.com/basics/14

A Tour of Go - Type inference のページ
A Tour of Go – Type inference のページ

タイトルを翻訳する

まずはお題の英語を翻訳してみます。

え~と、「Type inference」の意味は~~…

・・・

型推論」だそうでーす。

どーゆーことでしょーかねー、内容を読んでみます。

ページの内容を読んでみる

何時も通り1分ほどで読み切れる内容となっているようですが、今回のお題は型指定を省略した場合の詳細というか、仕様的なものが解説されているようです。

ポイントをぱぱっとまとめてみると…

  • 型指定を省略すると初期値と同じ型が適用される
  • リテラル値なら値の書式で型が決定される

ってところでしょうか。

これだけだとわけわかめなので詳しく見ていきます。

型指定を省略すると初期値と同じ型が適用される

同じ型になるかを試すために簡単なプログラムを書いてみました。

Runを押すとプログラムが実行されるんですが、①の初期値用変数の型と、②の型を省略した変数の型が一致しているのが確認できました。

というわけで、型指定を省略すると初期値の型が適用されるようです。

リテラル値なら値の書式で型が決定される

こんどは初期値にリテラル値を使った場合を試してみます。

Runボタンで実行してみると…

数値(123)は int

小数(0.1234)は float64

文字列("Hello")は string

という具合に、リテラル値の書式に応じて適した型が割り当てられる結果となりました。

それと余談ですが、数値に関しては int の精度を超える値を指定するとオーバーフローするようです。

こういう場合、上位の精度の型を割り当ててはくれないようですね。

今回のまとめ

今回は型を省略した場合に適用される型、についてでしたね~。

改めてポイントを纏めてみますと…

  • 変数の宣言で型を省略すると初期値の型とおなじになるんです
  • 初期値がリテラル値のときは値の書式で型が判断されるんです(オーバーフローに注意)

という感じでしたね。

冒頭でも書きましたが、ファンクションとか変数とかを扱っているカテゴリももうすぐ終わるので、頑張って進めていこうと思います。

まぁ、終わっても次のカテゴリがあるんですけどね。(´ε` )

それじゃまた次回~。٩(๑´3`๑)۶

GoGo言語,変数Go,変数

Posted by うっしー