Great! But it might have been more productive to hold off on the blog post until you've been using it for a few weeks, at least. You make a few barbed comments about the language designers, but you are nowhere near familiar enough with Go to be justified in doing so (IMO).
> If Foo is derived from a struct, and it doesn’t work when zero-valued, then there should be a function somewhere called something like NewFoo. Good luck finding the right one.
I've never needed luck, here. This isn't a real problem for actual Go programmers.
> Why is there this special function that construct these three random types?
They're not "random types". They're special built in types that are managed by the language runtime. That makes them distinct from anything you can write as a user, and that's why they use the built in make function for initialization.
> I think channels are value types, which is strange since it’s the only other type created with make.
No, channels are reference types, too. Just like everything created with make.
There are more misconceptions and inaccuracies.