Hacker News new | ask | show | jobs
by eptcyka 1325 days ago
Go doesn't really allow you to create a hashmap with the same generic possibilities as the built in one.
2 comments

Why is it? Or rather what limitations are there to enforced by go compiler that won’t allow someone to implement their own hash map that can free memory with the same generic possibilities, even with the recent introduction of generics?
Seems like I was wrong about my assumptions about Go's generics - it does seem like they're specialized at build time and it is possible to operate over generic values rather than fat pointers. So it is possible to implement a fully featured hash map without extra pointer hopping now. I stand corrected.
Is that still true with the support Go added for generics?
You probably won't be able to match the built-in's performance without a similarly large surface area of unsafe usage. And Go's maintainers won't maintain your unsafe code for you as they do the default, nor consider the impact of other language changes on your micro-optimizations.

https://github.com/golang/go/blob/master/src/runtime/map.go

You also won't have `for k, v := range` iteration, but that is also likely being addressed within the next few versions.

But - no, there's not really any major ergonomic issues to basic lookups given generics these days.