¿Cómo utilizo un vector (genérico) en go?
Pregunta
Estoy utilizando un tipo de vector para almacenar matrices de bytes (tamaño variable)
store := vector.New(200);
...
rbuf := make([]byte, size);
...
store.Push(rbuf);
Que todo funciona bien, pero cuando intento para recuperar los valores, el compilador me dice que necesito utilizar afirmaciones tipo. Así que añadir los de, e intento
for i := 0; i < store.Len(); i++ {
el := store.At(i).([]byte);
...
Pero cuando corro esto se rescata con:
interface is nil, not []uint8
throw: interface conversion
Cualquier idea de cómo puedo 'fundido' / Convertir desde la interfaz elemento vacío que Vector utiliza para almacenar sus datos a la [] matriz de bytes reales que a continuación quiero utilizar posteriormente?
Update (Go1): El paquete de vector se ha eliminado en 2011-10-18 .
Solución
Esto funciona muy bien para mí. ¿Ha inicializado los primeros 200 elementos de su vector? Si no lo hizo, probablemente será igual a cero, lo que sería el origen de su error.
package main
import vector "container/vector"
import "fmt"
func main() {
vec := vector.New(0);
buf := make([]byte,10);
vec.Push(buf);
for i := 0; i < vec.Len(); i++ {
el := vec.At(i).([]byte);
fmt.Print(el,"\n");
}
}