Wie kann ich ein (generic) Vektor in go benutzen?
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 .
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");
}
}