4 ms·
I spent quite a few hours tracking down bugs due to miscased struct fields unfortunately. Strongly prefer explicitness over implicitness
by jjallen 2y ago
I spent quite a few hours tracking down bugs due to miscased struct fields unfortunately. Strongly prefer explicitness over implicitness
- latchkey 2y agoWhich IDE do you use? Mine would flag this as an error pretty quickly.
- jjallen 2y agoGoland. How would an IDE know that you intended a struct field to be public or not?
- latchkey 2y agoAny non-private usage of a private struct is a compile error. If you're using goland, it would report this as an error as it is effectively compiling your code as you write it. Also, autocomplete wouldn't work when you tried to use the private struct.
- randomdata 2y agoThe casing rules are quite explicit and enforced by the compiler. A build would have immediately failed on whatever mismatch you had. A few hours and you didn't even think to try compiling it? I'm guessing you are talking about something else entirely, like, perhaps, decoding JSON into a struct using reflection and encountering a situation where the field names didn't match? Indeed, implicitness can bite you there. That's true in every language. But, then again, as you prefer explicitness why would you be using that approach in the first place?
- jjallen 2y agoThe rules are explicit but the actual changes in code are very small and unique to this language (or unique from the languages I had ever used). It’s one of those things that you can forget about — because it’s a small difference in code and arguably isn’t explicit. I forget what it was, but basically my code wasn’t working the way I thought it should and it was solely due to a lowercased struct field. It happened twice where I spent at least a little while trying to figure it out. And yeah I would guess that I tried to compile. Would be very dumb if I hadn’t although wouldn’t be the dumbest thing I’ve ever done