私はGoで、スライスのreflect.Value表現を扱っています。私は次のものを持っています:
slice := reflect.MakeSlice(typ, len, cap)
から i 番目の値を取得したい場合はslice
、簡単です。
v := slice.Index(i) // returns a reflect.Value
ただし、 i 番目の値を設定する方法が見つからないようです。reflect.Value
たとえば、マップがあった場合m
、次のことが可能です。
m.SetMapIndex(key, value) // key and value have type reflect.Value
しかし、スライスに相当するものはないようです。私が考えたのは、返される値slice.Index(i)
が実際にはどういうわけかポインターであるため、呼び出しv := slice.Index(i); v.Set(newV)
が機能するのではないかということでした。わからない。アイデア?