题
我正在使用 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.
解决方案
这对我来说效果很好。您是否已初始化向量的前 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");
}
}
不隶属于 StackOverflow