I'm in Go, che funziona con una reflect.Value rappresentazione di una sezione. Ho il seguente:Imposta indice di sezione utilizzando reflect in Go
slice := reflect.MakeSlice(typ, len, cap)
Se voglio ottenere il valore-esimo dal slice
, è semplice:
v := slice.Index(i) // returns a reflect.Value
Tuttavia, non riesco a trovare un modo per impostare i-esimo valore. reflect.Value
ha un sacco di metodi setter, per esempio, se ho avuto una mappa, m
, il seguente è possibile:
m.SetMapIndex(key, value) // key and value have type reflect.Value
Ma non sembra essere un equivalente per le fette. Il mio unico pensiero è che forse il valore restituito da slice.Index(i)
è in realtà un puntatore in qualche modo, quindi chiamare v := slice.Index(i); v.Set(newV)
funzionerebbe? Non ne sono sicuro. Idee?
Ehi, grazie. L'ho capito (una specie di salto di pistola nel pubblicare una domanda: D). – joshlf
@ joshlf13 Noto che hai fatto alcune domande 'reflect'. Controlla il 'xmlutil' linkato sopra, così come alcuni degli altri pacchetti di codifica. Dovrebbero aiutare un po '. – Luke
Ok, lo farò. A proposito, se sei interessato, la ragione per cui sto usando riflette molto è che sto scrivendo un pacchetto chiamato "illegale" che fornisce funzioni per eseguire azioni tecnicamente non consentite (come una generica funzione Mappa, confrontando due puntatori di funzione, eccetera). Al momento è un repo privato su github (non ancora pronto per la produzione), ma se sei interessato a contribuire, sarei felice di avere un aiuto. – joshlf