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