5

我正在使用 Vector 类型来存储字节数组(可变大小)

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

这一切都很好,但是当我尝试检索值时,编译器告诉我需要使用类型断言。所以我把它们加进去,然后试试

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

但是当我运行它时,它会退出:

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

知道如何从 Vector 用来存储其数据的空 Element 接口“转换”/转换为我随后想要使用的实际 []byte 数组吗?


更新(Go1):矢量包已于2011-10-18删除。

4

1 回答 1

8

这对我来说很好。您是否初始化了向量的前 200 个元素?如果您不这样做,它们可能会为零,这将是您错误的根源。

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");
     }
}
于 2009-11-13T01:00:07.423 回答