如何在 Go 中将 bson.Binary 转换为 []byte
How to convert bson.Binary to []byte in Go
我正在编写一个小应用程序,它从网络(不是 MongoDB)接收 BSON 格式的消息,并且必须将字段保存在本地计算机上的文件中。我正在使用 gopkg.in/mgo.v2/bson 进行消息解组,它工作正常。
除了一个,几乎所有的东西都能用。消息中有 "userdefined" 二进制字段,我必须将其保存到单独的文件中。我尝试使用:
var pwr = msg["pwr"].([]byte)
但得到了 "error panic: interface conversion: interface is bson.Binary, not []uint8".
谁能告诉我一个如何将 bson.Binary 转换为 []byte 的例子,这样我就可以将它保存到文件中。
这就是你想要的:
pwr := bson.Binary(msg["pwr"].(bson.Binary)).Data
但假设 msg["pwr"] 不能是除 bson.Binary 以外的任何东西...如果这不是不变量,您应该首先进行类型断言(处理可能的类型不匹配情况当它发生时)然后进行转换以获取数据字段。
我正在编写一个小应用程序,它从网络(不是 MongoDB)接收 BSON 格式的消息,并且必须将字段保存在本地计算机上的文件中。我正在使用 gopkg.in/mgo.v2/bson 进行消息解组,它工作正常。
除了一个,几乎所有的东西都能用。消息中有 "userdefined" 二进制字段,我必须将其保存到单独的文件中。我尝试使用:
var pwr = msg["pwr"].([]byte)
但得到了 "error panic: interface conversion: interface is bson.Binary, not []uint8".
谁能告诉我一个如何将 bson.Binary 转换为 []byte 的例子,这样我就可以将它保存到文件中。
这就是你想要的:
pwr := bson.Binary(msg["pwr"].(bson.Binary)).Data
但假设 msg["pwr"] 不能是除 bson.Binary 以外的任何东西...如果这不是不变量,您应该首先进行类型断言(处理可能的类型不匹配情况当它发生时)然后进行转换以获取数据字段。