Having non-nullable types is sadly not really compatible with the requirement for all types to have a valid zero value. As I mentioned in the article, although it would be possible for the zero value for a pointer to automatically allocate a zero-valued object to point at, that would result in a lot of wasted allocations and generally degrade the performance of most Go programs. You’d also get into a strange situation where the zero value for two pointers would not compare as equal, since they would point at distinct objects in memory. So as much as I like the idea of nil being removed from the language, I don’t see how it can be done without fundamentally overhauling the type system.