Go言語で[]Tを[]interface{}に変換するには

Go言語で任意の型のスライスを空のインターフェース(interface{})のスライスに変換する方法を説明します。

ダイレクトに変換できない

int型のスライスからinterface{}型のスライスへ変換を試みます。

s1 := []int{1, 2}
s2 := []interface{}(s1)

すると、コンパイルエラーとなってします。

cannot convert s1 (type []int) to type []interface {}

正解

for文で各要素をコピーします。

s1 := []int{1, 2}
s2 := make([]interface{}, len(s1))
for i, v := range s1 {
    s2[i] = v
}