0

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 {})。の値ainterface{}、したがって*a =、ポインターが指しているスペースに右側の値を割り当てることになります。しかし、私の電話はAppendSlice戻っValueてきます。型アサーションがどこで発生する必要があるのか​​ わかりません.左側にあると思いますか?

4

2 に答える 2