2017-01-24 96 views
1

我只是第一次进入Go,并最终让我的Win10机器上运行的东西。最后得到了IntelliJ IDEA内部的断点,我在调试器窗口中看到类似这样的东西。那些乱码字符应该实际上是来自MongoDB的24个字符的十六进制标识符。Debug Inspector显示奇怪的字符?

我最好的猜测是,这是与氧化镁无法正常解组ObjectId对象的问题,但这似乎并没有对任何运行Linux或Mac系统的开发者的问题,所以也许它只是一个Windows的事情?

任何输入将不胜感激!

obfuscated screenshot

回答

1

这里没有错误。 bson.ObjectId具有基本类型的string

type ObjectId string 

但它是用来存储12“任意”字节(“任意”是指它不意味着由符文来解释,并且它不是一个有效的UTF-8编码的序列)。它通常使用其字节的十六进制表示显示,供人类使用。

调试器没有那么方便。他们看到这是一个string,所以他们试图将其显示为string(尽管它并不意味着)。这不仅仅是一个Windows操作系统,带有delve调试器的Atom编辑器在Linux上也是如此。完全不用担心。

如果打印ObjectId,它通常是fmt包的“东西”,以利用其String()方法来获取要显示的string值。调试器不一定这样做。

+0

你是对的!谢谢! – KOGI