Frage

Ich bin mit einem Vektortyp Speicher-Arrays von Bytes (variable Größen)

store := vector.New(200);
...
rbuf := make([]byte, size);
...
store.Push(rbuf);

Das alles funktioniert gut, aber wenn ich versuche, die Werte zu erhalten, sagt der Compiler mich Ich brauche Typ Behauptungen zu verwenden. Also ich diese in hinzufügen und versuchen

for i := 0; i < store.Len(); i++ {
   el := store.At(i).([]byte); 
...

Aber wenn ich dies führen Sie es zieht mit mit:

interface is nil, not []uint8
throw: interface conversion

Jede Idee, wie ich kann ‚cast‘ / convert aus dem leeren Elemente Schnittstelle dass Vector verwendet, um seine Daten zu speichern, zu dem tatsächlichen [] Byte-Array, dass ich dann später verwenden?


Update (Go1): Das Vektor-Paket wurde auf 2011-10-18 .

War es hilfreich?

Lösung

Dies funktioniert gut für mich. Haben initialisiert die ersten 200 Elemente des Vektors? Wenn Sie nicht das werden sie wahrscheinlich gleich Null, die die Quelle des Fehlers sein würden.

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");
     }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top