363
Not a Number
(jemmy.jeena.net)
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
What I mean is that in JS you can't do
NaN != NaN
, not evenvariable != NaN
. So you're not saying it's the same in Go, since you can doa != nil
?Kinda.
nil
is a weird value in Go, not quite the same asnull
orNone
in JS and Python, respectively. Anil
value may or may not be typed and it may or may not be comparable to similar or different types. There is logical consistency to where these scenarios can be hit but it is pretty convoluted and much safer, with fewer footguns to check fornil
values before comparison.I'm other words, in Go
(nil == nil) || (nil != nil)
, depending on the underlaying types. One can always check if a variable has anil
value but may not be able to compare variables if one or more have anil
value. Therefore, it is best to first check fornil
values to protect against errors that failure to execute comparisons might cause (anything from incorrect outcome to panic).ETA: Here's some examples
Thoroughly confusing lol. I think I need to check the spec in order to grasp this. I feel like this has more to do with the typing system rather than
nil
itself, maybe. I'll see.But yeah, this is nothing like
null
orundefined
in JS, but more similar toNaN
.Thank you for trying to explain!
Yeah... It's weird but I find it useful that it is, in a weird way. Treating it as an uncertainty means that one MUST explicitly check all pointers for
nil
as part of normal practice. This avoids NPEs.