任意のタイプのスライスから要素をランダムに選択できる関数を実装しようとしています (python の random.choice 関数のように)
func RandomChoice(a []interface{}, r *rand.Rand) interface{} {
i := r.Int()%len(a)
return a[i]
}
ただし、[] float32 型のスライスを最初の引数に渡そうとすると、次のエラーが発生します。
cannot use my_array (type []float32) as type []interface {} in function argument
これはインターフェースの根本的な誤用ですか?{} これを行うためのより良い方法はありますか?