The Go language implements MAPS as hash tables using 8 buckets
https://dave.cheney.net/2018/05/29/how-the-go-runtime-implements-maps-efficiently-without-generics
The bucket represents 3 bits mask of the key value, and each bucket points to a space of size 8; the numbers are doubled with the increase of size (always power of 2)
The details of the bucket struct is as follows
Where the _type is:
The designers describe their Go map as a compromise between C++ unordered maps and JAVA hashmap
Unlike Java, you can use scalar values like characters and integers without the overhead of boxing. Unlike C++, instead of N runtime.hashmap implementations in the final binary, there are only N runtime.maptype values, a substantial saving in program space and compile time
I found another helpful, and newer, reference too
https://www.fatalerrors.org/a/a-comprehensive-analysis-of-golang-s-map-design.html