我是第一次接触 Go,终于在我的 Win10 机器上运行了。终于在 IntelliJ IDEA 中设置了断点,我在调试器窗口中看到了类似的东西。那些乱七八糟的 unicode 字符实际上应该是来自 MongoDB 的 24 个字符的 HEX id。
我最好的猜测是,这是 mgo 没有正确解码 ObjectId
对象的问题,但这似乎不是任何正在运行的开发人员的问题linux 或 macOS,所以也许这只是 Windows 的问题?
如有任何意见,我们将不胜感激!
最佳答案
这里没有错误。 bson.ObjectId
具有 string
的基础类型:
type ObjectId string
但它用于存储 12 个“任意”字节(“任意”意味着它不应该被 rune 解释,并且它不是有效的 UTF-8 编码序列)。对于人类,它通常使用其字节的十六进制表示来显示。
调试器不享受这种便利。他们看到它是一个 string
,所以他们试图将它显示为 string
(即使这不是故意的)。这不仅仅是 Windows 独有的事情,带有 delve 调试器的 Atom 编辑器在 Linux 上也做同样的事情。不用担心。
如果你打印一个ObjectId
,它通常是fmt
包的“东西”使用它的 String()
方法获取要显示的 string
值。调试器不一定会这样做。
关于string - 调试检查器显示奇怪的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41818044/