我得到一个:
reflect.Value.Slice:不可寻址数组的切片
当我尝试使用 mgo 将 sha256 哈希添加到 mongoDB 时出错。其他 [] 字节工作正常。
hash := sha256.Sum256(data)
err := c.Col.Insert(bson.M{"id": hash})
知道问题可能是什么吗?我知道我可以将哈希编码为字符串,但这不是必需的。
该错误意味着 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