streng - Debug Inspector viser mærkelige tegn?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er bare kommet ind i Go for første gang og endelig fik ting kørende på min Win10-maskine. Endelig fik jeg pausepunkter inden for IntelliJ IDEA, og jeg kan se ting som dette i mit debuggervindue. Disse messer af unicode chars burde faktisk være en 24-char HEX id, der kommer fra MongoDB.


Mit bedste gæt er, at dette er et problem med mgo , ikke korrekt udfordrer ObjectId objekter, men det synes ikke at være et problem for nogen af ​​de devs, der kører linux eller macOS, så måske det er bare en Windows ting?


Enhver input ville blive værdsat!


obfuscated screenshot [11]

Bedste reference


Ingen fejl her. bson.ObjectId har en underliggende type string: [12]


type ObjectId string


Men det bruges til at gemme 12 'vilkårlig' bytes ('vilkårlig' betyder, at den ikke skal fortolkes af runer, og den er ikke en gyldig UTF-8 kodet sekvens). Den vises normalt ved hjælp af hex-repræsentationen af ​​dens bytes, for mennesker.


Debuggere tager ikke den bekvemmelighed. De ser det 'sa string, så de forsøger at vise det som en string (selvom det ikke er meningen at). Dette er ikke en Windows-kun ting, Atom editoren med delve debugger gør det samme også på Linux. Intet at bekymre sig om.


Hvis du udskriver en ObjectId, er det normalt fmt pakken 's' ting 'for at bruge sin String() metode til at erhverve værdien string, der skal vises. Debuggere gør ikke nødvendigvis det. [13]