Go / Mgo - > MongoDB中的[]字节,不可寻址数组的片段

时间:2014-04-05 15:03:44

标签: mongodb go mgo

我得到了:

  

reflect.Value.Slice:片段无法寻址的数组

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

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

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

1 个答案:

答案 0 :(得分:2)

该错误意味着bson将哈希视为[]byte,但它实际上是[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