所以我有以下两种方法:func Marshal(in interface{}) (out []byte, err error)func readDocument(r io.Reader) ([]byte, error)在我的代码中,我执行以下操作:queryDoc, err := readDocument(client) // querydoc is slice of len 408if something { queryDoc, err := bson.Marshal(something) newDocLen := len(queryDoc) // len is now 200}len(queryDoc) // len is 408????出于某种原因,queryDoc 不会随着解组而更新。但是,如果我分配给一个中间值,它会起作用:queryDoc, err := readDocument(client) // querydoc is slice of len 408if something { q, err := bson.Marshal(something) queryDoc = q newDocLen := len(queryDoc) // len is now 200}len(queryDoc) // len is 200由于我在第一个示例中将返回值分配给 queryDoc,变量 queryDoc 现在不应该引用新数组吗?
1 回答
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
在
queryDoc, err := bson.Marshal(something)
你实际上创建了一个新queryDoc的:=而不是=. 编译器没有捕获它,因为您也使用了它。将其替换为
var err error
queryDoc, err = bson.Marshal(something)
它应该按预期工作。
- 1 回答
- 0 关注
- 210 浏览
添加回答
举报
0/150
提交
取消