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 .

¿Fue útil?

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");
     }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top