Curious why hyperloglog was used for this? It doesn't seem like something that would require a sophisticated approach. Also, why no mutex, is this thread safe, because in a web server it's going to be called from goroutines? Have you tested it in a real server with -race?
This does cover most of the bases, but it'd be nice if it mentioned inheritance and composition, as I think that's the major point that trips people up coming from OOP languages.
People coming from an OOP background are usually really confused by the lack of inheritance, some going as far as to call Go not OOP (which is fine, really the cargo-culted OOP of the 90s is not really the original OOP anyway).
Though concurrency gets all the hype, it's implicit interfaces which are the deepest, most useful feature of go for me - making it clear that interfaces are defined at the point of use, not at the point of definition.
I predict the future for go is bright. We're now a few years after this post and things are still looking up. It's interesting though to see the areas where go has had most success - I think on the server it's done really well, but on mobile or desktop it is simply not present, mainly due to the lack of a UI library. A UI library however is a huge amount of work for little gain against multiple moving target which have no incentive to make cross platform solutions work. It's a losing proposition. The vendors of mobile and desktop solutions need lock-in, and don't want to see cross platform solutions flourish.
I'm not sure it'll ever supplant Java in the enterprise, or if I'd want it to - if it does the pressure would be enormous for it to support lots of cruft and legacy formats, and design patterns and frameworks would emerge which made everything more complex and laden with bureaucracy, because that's the nature of the enterprise. A language is to a great extend defined by its culture, and I like that Go has a small footprint and a culture of minimalism.