string - 调试检查器显示奇怪的字符?

标签 string windows mongodb go intellij-idea

我是第一次接触 Go,终于在我的 Win10 机器上运行了。终于在 IntelliJ IDEA 中设置了断点,我在调试器窗口中看到了类似的东西。那些乱七八糟的 unicode 字符实际上应该是来自 MongoDB 的 24 个字符的 HEX id。

我最好的猜测是,这是 mgo 没有正确解码 ObjectId 对象的问题,但这似乎不是任何正在运行的开发人员的问题linux 或 macOS,所以也许这只是 Windows 的问题?

如有任何意见,我们将不胜感激!

obfuscated screenshot

最佳答案

这里没有错误。 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/

相关文章:

php - 为什么这种 mongo 排序在 PHP 中不起作用?

mongodb - 如何在 MongoDB 中自定义 $group 输出?

java - 加载 native 库时 OSGI 框架挂起

Windows 2003 Server 无法连接到 SSL 网站

arrays - 如何将一个对象插入到mongo数组中的另一个对象中

基于C字符串的编程代码

Java:PrintWriter 和字符串中的换行符

java - 如何使解密方法起作用以将加密的字符串返回到原始字符串?

javascript - 将字符串转换为 Json - javascript

windows - ffmpeg只保存第一帧