I think you are stuck. reflect.Type is an interface. The concrete type of the values returned by reflect.TypeOf are *reflect.rtype. Really want to use *reflect.rtype for your key type, but it’s inaccessible. The compiler requires the generic key type used in a map to implement comparable. Interface types do not: builtin package - builtin - pkg.go.dev. Maybe you can hack around it with a uintptr from the pointer underlying reflect.Type. The builtin map doesn’t seem to have the same requirement for comparable keys.