如何在go中使用(通用)矢量?

Oli*_*son 3 vector go

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

store := vector.New(200);
...
rbuf := make([]byte, size);
...
store.Push(rbuf);
Run Code Online (Sandbox Code Playgroud)

这一切都运行良好,但是当我尝试检索值时,编译器告诉我需要使用类型断言.所以我添加了这些,然后尝试

for i := 0; i < store.Len(); i++ {
   el := store.At(i).([]byte); 
...
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,它挽救了:

interface is nil, not []uint8
throw: interface conversion
Run Code Online (Sandbox Code Playgroud)

任何想法我怎么可以从Vector用来将其数据存储到我想要随后使用的实际[]字节数组的空元素接口"转换"/转换?


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

Sco*_*les 7

这对我来说很好.你初步确定了矢量的前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");
     }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,容器/向量已被删除并替换为切片数组包装器 (2认同)