Go言語には、全ての型と互換性を持っているinterface{}型(空インターフェース)というものが存在しています。 たとえば以下のように、interface{}で宣言した変数にはどんな型の値でも代入可能です var obj interface{} obj = 123 // int obj = "str" // string obj = []string{"linux", "windows", "android"} // slice obj = make(chan string) // channel obj = func(val int) string { return fmt.Sprintf("number is %d", val) } // function また、引数の型をinterface{}にすると、どんな型の値でも受け取ることができる関数を記述できます func anyExe