Goの変数宣言を行いました。型を宣言する静的言語ではありますけども、:=を使って省略宣言も行うことができました。
この省略宣言を行った時やvarで宣言していてもコードの記述が進んでいくに連れて、後々に変数の型が何だったか確認する必要がある場合もあります。
ここでは、変数の型(type)の確認をする方法について見ていきましょう。
変数宣言の復習
復習を兼ねて、変数の宣言を確認してみます。
次のようなコードを書いてみましょう。
package main
import "fmt"
var i int = 100
var f float64
func main() {
f = 1.2
s := "Golang"
fmt.Println(i)
fmt.Println(f)
fmt.Println(s)
}
funcの外で変数のiとfを宣言しています。iは値を入れて初期化していますが、fの方ですが、この形は変数宣言の方では扱っていませんでした、関数の中で値を代入しています。変数sについては省略宣言を使って初期化しています。
実行すると次のように表示されます。
100
1.2
Golang
ここまでは特に問題ないと思います。
型を確認する – %TとPrintf()
では、このコードで使った変数の型を確認していきましょう。
型を確認するには、Printf()を使って%Tで表示することができます。
コードに追加してみましょう。
package main
import "fmt"
var i int = 100
var f float64
func main() {
f = 1.2
s := "Golang"
fmt.Println(i)
fmt.Printf("%T\n", i)
fmt.Println(f)
fmt.Printf("%T\n", f)
fmt.Println(s)
fmt.Printf("%T\n", s)
}
Println()に並べてPrintf()で出力してみました。
型を確認するにはこの形で表示することができます。
fmt.Printf("%T\n", [変数])
Printf()の第1引数に”%T\n”を記述します。第2引数に型を調べたい変数を記述します。
“%T\n”を”%T”としても出力できますが、”%T\n”とすることによってその行を改行して出力することができます。
この%Tのところに、変数が代入されて型が調べられるという形になっています。
実行すると次のように表示されるはずです。
100
int
1.2
float64
Golang
string
それぞれの値の下に、int、froat64、stringと変数の型が表示されているのがわかります。
このコードはPrintln()を使わずに次のように書くこともできます。
package main
import "fmt"
var i int = 100
var f float64
func main() {
f = 1.2
s := "Golang"
fmt.Printf("%T, %v\n", i, i)
fmt.Printf("%T, %v\n", f, f)
fmt.Printf("%T, %v\n", s, s)
}
変数の初期化は同じですが、Printf()関数に%vというものを加えて、第3引数にも変数を加えています。これによって、型と値の両方を一度に表示することができます。
%TのTはtypeのT、%vのvはvalueのvということになります。
実行結果は次のようになります。
int, 100
float64, 1.2
string, Golang
型と値がそれぞれ表示されているのがわかります。
このようにして、型を表示することができることを確認できました。
Pythonコードで書いてみると・・・
Pythonで型を確認するにはどうするのかやってみましょう。
同じような内容のコードをPythonで書くと次のように書くことができます。
i = 100
f: float
def main():
f = 1.2
s = "Python"
print(type(i), i)
print(type(f), f)
print(type(s), s)
if __name__ == "__main__":
main()
Pythonは変数の型宣言が初期化時点では必要無いのですが、fについては関数の外でfloatを指定して表現してみました。ここでfだけではエラーになります。
Pythonにもprintf()というものがありますが、データ型に合わせて文字列の書式に入れ込む形なので、ちょっとこの場合のGo言語とは違う感じですね。
Pythonには型を調べるのにtype()が使えます。これを使ってここではコードを書いて見ました。
実行結果はこうなります。
<class 'int'> 100
<class 'float'> 1.2
<class 'str'> Python
それぞれのクラスとして型が表示されているのがわかります。
最後に
ここでは、Goの変数の型を調べる方法について見てきました。
型を調べるには、Printf()を使って、%Tに変数を代入することによって出力することができます。
Printf()での出力は改行されないので、\nを使って改行表示することができます。