interface{}
このコードは、スライス上で効果的に左回転し、入力パラメーターとして受け入れるより一般的なバージョンに変換するのに問題があります。
func rotate(a *[]int, i int) {
x, b := (*a)[:i], (*a)[i:]
*a = append(b, x...)
}
最終的な課題に問題があります:
func rotateSlice(a interface{}, i int) {
v := reflect.ValueOf(a)
x, b := v.Elem().Slice(0, i), v.Elem().Slice(i, v.Elem().Len())
*a = reflect.AppendSlice(b, x)
}
エラー メッセージは次のとおりですinvalid indirect of a (type {})
。の値a
はinterface{}
、したがって*a =
、ポインターが指しているスペースに右側の値を割り当てることになります。しかし、私の電話はAppendSlice
戻っValue
てきます。型アサーションがどこで発生する必要があるのか わかりません.左側にあると思いますか?