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 インターフェイスから、後で使用したい「キャスト」/変換する方法はありますか?


更新 (Go1):ベクター パッケージは2011-10-18に削除されました。

4

1 に答える 1

8

これは私にとってはうまくいきます。ベクターの最初の 200 要素を初期化しましたか? そうしないと、おそらく nil になり、エラーの原因になります。

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 に答える