0

我得到一个:

reflect.Value.Slice:不可寻址数组的切片

当我尝试使用 mgo 将 sha256 哈希添加到 mongoDB 时出错。其他 [] 字节工作正常。

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

知道问题可能是什么吗?我知道我可以将哈希编码为字符串,但这不是必需的。

4

1 回答 1

3

该错误意味着 bson 将 hash 视为 a []byte,但它实际上是 a [32]byte。后者是一个数组值,不能使用反射包对数组值进行切片。

修复很简单;给 bson 一片hash代替:

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

Go 的作者之一 Ian Lance Taylor 在这里解释了这一点: https ://groups.google.com/d/msg/golang-nuts/ps0XdkIffQA/gekY8N0twBgJ

于 2014-04-05T15:22:52.087 回答