为了账号安全,请及时绑定邮箱和手机立即绑定

Golang中的变量赋值

Golang中的变量赋值

Go
一只名叫tom的猫 2021-08-30 14:42:18
所以我有以下两种方法: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)

它应该按预期工作。


查看完整回答
反对 回复 2021-08-30
  • 1 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信