0

私は得ています:

Reflect.Value.Slice: アドレス指定できない配列のスライス

mgo を使用して mongoDB に sha256 ハッシュを追加しようとすると、エラーが発生します。他の [] バイトは問題なく動作します。

hash := sha256.Sum256(data)
err := c.Col.Insert(bson.M{"id": hash})

何が問題なのかわかりますか?ハッシュを文字列としてエンコードできることはわかっていますが、それは必要ありません。

4

1 に答える 1

3

このエラーは、bson がハッシュを として扱っていることを意味しますが、[]byte実際には[32]byte. 後者は配列値であり、配列値は Reflect パッケージを使用してスライスすることはできません。

修正は簡単です。代わりにbson にスライスを与えますhash:

err := c.Col.Insert(bson.M{"id": hash[:]})

Go の作者の 1 人である Ian Lance Taylor は、これについて次のように説明しています

于 2014-04-05T15:22:52.087 に答える