Me estoy metiendo en Go por primera vez y finalmente conseguí que todo funcionara en mi máquina Win10. Finalmente obtuve puntos de interrupción trabajando dentro de IntelliJ IDEA, y estoy viendo cosas como esta en mi ventana del depurador. Esos líos de caracteres Unicode en realidad deberían ser una identificación HEX de 24 caracteres que proviene de MongoDB.
Mi mejor suposición es que este es un problema con mgo que no desarma correctamente los objetos ObjectId , pero esto no parece ser un problema para ninguno de los desarrolladores que ejecutan Linux o macOS, así que tal vez sea solo una cosa de Windows.
¡Cualquier entrada sería apreciada!
No hay error aquí. bson.ObjectId tiene un tipo subyacente de string :
type ObjectId stringPero se usa para almacenar 12 bytes "arbitrarios" ("arbitrario" significa que no debe ser interpretado por runas, y no es una secuencia codificada UTF-8 válida). Por lo general, se muestra usando la representación hexadecimal de sus bytes, para humanos.
Los depuradores no toman esa conveniencia. Ven que es una string , por lo que intentan mostrarla como una string (aunque no sea su intención). Esto no es algo exclusivo de Windows, el editor Atom con el depurador Delve también hace lo mismo en Linux. Nada de que preocuparse.
Si imprime un ObjectId , generalmente es la "cosa" del paquete fmt usar su método String() para adquirir el valor de string que se mostrará. Los depuradores no necesariamente hacen eso.