我刚刚第一次进入Go并最终在我的Win10机器上运行。终于在IntelliJ IDEA内部得到了断点,我在调试器窗口中看到了这样的东西。那些unicode字符的混乱实际上应该是来自MongoDB的24-char HEX id。
我最好的猜测是mgo没有正确解组ObjectId
对象,这是一个问题,但对于任何运行linux或macOS的开发人员来说这似乎都不是问题,所以也许它只是一个Windows的东西?
任何输入将不胜感激!
这里没有错误。 bson.ObjectId
有一个基础类型的string
:
type ObjectId string
但它用于存储12个“任意”字节(“任意”意味着它不是由符文解释,并且它不是有效的UTF-8编码序列)。对于人类,它通常使用其字节的十六进制表示来显示。
调试器不会那么方便。他们认为这是一个string
,所以他们试图将它显示为string
(即使它并不意味着)。这不是Windows专用的东西,带有Delve调试器的Atom编辑器在Linux上也是这样做的。没什么好担心的。
如果你打印一个ObjectId
,通常是fmt
包的“东西”使用它的String()
方法来获取要显示的string
值。调试器不一定这样做。