4 ms·
Nil is a carefully chosen name in Go, and was a trade-off which was made. It’s not quite right to compare it to null in other languages. I agree it is not as s
by fsociety 3y ago
Nil is a carefully chosen name in Go, and was a trade-off which was made. It’s not quite right to compare it to null in other languages.
I agree it is not as safe as a language like Rust, however it was the right trade-off to make in my opinion.
The main protection you have against nil pointers are nil receivers, and knowing when to use reference semantics vs value semantics.
- veber-alex 3y agoWhat's the tradeoff? what advantage having null pointers give?
- xchkr1337 3y agodefault values for everything without significantly increasing language complexity
- masklinn 3y agoAs far as I'm concerned, that's a drawback. Ubiquitous default values are an attractive nuisance. One which C# had already demonstrated 10 years prior. The removal of nil leading to the removal of ubiquitous default values would have been positive.
- 6D794163636F756 3y agoI think that's why people in this thread are calling it a tradeoff. It's a very attractive option that seems like a great idea until it breaks. In happy path having default values is better, in mixed path situations, having a separate and reserved way of saying something hasn't been touched is incredibly powerful
- 708145_ 3y agoI think default values are a major flaw, much worse than nil. An unintended default value causes data corruption. All types should be nillable in my opinion, using types that have fallback to a default value is source of nasty silent bugs. In Java for example I would never use a primitive data type.