我正在使用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"); } }