【Go入門】型(type)を調べる – %T と Printf()

Go
スポンサーリンク

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 3.8.6 ドキュメント

Pythonには型を調べるのにtype()が使えます。これを使ってここではコードを書いて見ました。

実行結果はこうなります。

<class 'int'> 100
<class 'float'> 1.2
<class 'str'> Python

それぞれのクラスとして型が表示されているのがわかります。

スポンサーリンク

最後に

ここでは、Goの変数の型を調べる方法について見てきました。

型を調べるには、Printf()を使って、%Tに変数を代入することによって出力することができます。

Printf()での出力は改行されないので、\nを使って改行表示することができます。

Go
スポンサーリンク
CodeGraffitiをフォローする

コードグラフィティ ~ とにかく進もうプログラミング入門~
タイトルとURLをコピーしました