The type of map keys in Go should be comparable. As you haven't specified 
any restriction to the type parameters, it doesn't compile because Go 
doesn't know whether K and V are comparable.

If you add the restriction  "comparable", then it compiles:

type BiMap[type V, K comparable] struct {
forward map[K]V
reverse map[V]K 
}

PD: It is true that the error could be more informative. Right now we get:

type checking failed for main 
prog.go2:13:14: invalid map key type K 
prog.go2:14:14: invalid map key type V

Not sure if it is possible but, ideally, the message should say something 
like "Invalid mp key type K: it is not comparable"

El lunes, 10 de agosto de 2020 a las 13:49:48 UTC+1, markus....@gain.pro 
escribió:

> This is invalid: 
>
> type BiMap[type V, K] struct {
> forward map[K]V
> reverse map[V]K 
> }
>
> How do I specify an interface constraint for V,K such that this is valid? 
> Is that possible at all?
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/fea594db-a877-45a1-913b-46bb427f8795n%40googlegroups.com.

Reply via email to