Golang interface{}
interface{}は{}も含めて型の名前。
int, float64, stringなど全ての型と互換性をもっている。
var x interface{} fmt.Printf("%#v", x) // "<nil>"
のように初期値は "<nil>"
と出力される。
Goにおける"<nil>"
は具体的な値を持っていないという状態を表す特殊な値になる。
すべての型と互換性があるため以下のように書ける。
var x interface{} x = 1 x = 3.14 x = "ごー" x = [...]int{1, 2, 3}
あらゆる型を代入することができる。
interface{}はあらゆる型を汎用的に表現できるものであり、演算の対象として利用することはできない。
var x, y interface{} x, y = 1, 2 z := x + y //できない