i don't quite understand why you're using enums as keys, you can use a anything but what already was pointed out, following your person example: https://play.golang.org/p/cuMlPeqR7Qb
On Sat, Jan 26, 2019, 3:26 PM Victor Giordano <vitucho3...@gmail.com> wrote: > Yup! That's right! At the end of the day i used the enums idioms > <https://stackoverflow.com/questions/14426366/what-is-an-idiomatic-way-of-representing-enums-in-go>, > employing integer type (the value that supports the "enum" ) > > (TL;DR;) Ancient History : > > The problem arises as i get used to use maps in Java where you can use as > a key a class definition (that is custom data type in Java, like the same > way an "struct" in Golang is a custom data type). So i get use to work with > types as keys, that way i could associate logic and data with an > asbtraction (recall that logic and data does not intrinsically belong to > that abstraction, so it would be wrong to place all in there). > > I wake-up in golang without that capability: i mean how i may refer to a > group of well know struct definitions in a generic way, i mean for example > this: > > type Person struct { > } > > var SpanishTermByStruct map[struct]string = map[struct]string{ > Person: "person", > } > > ? and in that moment the wondering about using "type" for key (or value) > comes to my mind... i then i get that is not allowed. > > > El sáb., 26 ene. 2019 a las 10:57, <mountain...@gmail.com> escribió: > >> I looked at your program example, mainly using the reflection type to >> design the mapped key, perhaps the reflected key is a comparable type, but >> I mainly propose specific types, such as func, slice, map can not be used >> as a key use >> >> 在 2019年1月25日星期五 UTC+8下午11:31:57,Victor Giordano写道: >>> >>> Yeah, i got the idea. I had already researched about it and what you >>> can do about it. >>> <https://stackoverflow.com/questions/50730331/mapping-concrete-types> >>> I was only repeating what i want as a dev in this community! >>> >>> El viernes, 25 de enero de 2019, 12:04:38 (UTC-3), Wagner Riffel >>> escribió: >>>> >>>> you can "employ" any custom type as key but the ones that doesn't >>>> defines equality operations, see >>>> https://golang.org/ref/spec#Comparison_operators >>>> as Ian already pointed out, you just can't build your custom type on >>>> top of func, map or slice to be a valid key, anything else you can. >>>> >>>> On Fri, Jan 25, 2019 at 12:47 PM Victor Giordano <vituc...@gmail.com> >>>> wrote: >>>> > >>>> > Just wanna say : It would be nice to employ a custom type as a valid >>>> key for a map!!! :D >>>> > >>>> > >>>> > El jueves, 24 de enero de 2019, 0:47:32 (UTC-3), mount...@gmail.com >>>> escribió: >>>> >> >>>> >> thanks lan. >>>> >> >>>> >> 在 2019年1月23日星期三 UTC+8下午11:26:57,Ian Lance Taylor写道: >>>> >>> >>>> >>> On Tue, Jan 22, 2019 at 11:47 PM <mount...@gmail.com> wrote: >>>> >>> > >>>> >>> > i got : >>>> >>> > # command-line-arguments >>>> >>> > ./key.go:6:18: invalid operation: F() == F() (func can only be >>>> compared to nil) >>>> >>> >>>> >>> Yes, that is what the language spec says and it is what I said: in >>>> Go, >>>> >>> function values are not comparable. >>>> >>> >>>> >>> I wrote that code as an example to help explain why function values >>>> >>> are not comparable. >>>> >>> >>>> >>> Ian >>>> >>> >>>> >>> > 在 2019年1月23日星期三 UTC+8上午11:59:07,mount...@gmail.com写道: >>>> >>> >> >>>> >>> >> When i use the func, map slice as the key of map, it isn't >>>> work! >>>> >>> >> So I lookup source why, i find >>>> >>> >> >>>> >>> >> // spec: "The comparison operators == and != must be fully >>>> defined >>>> >>> >> // for operands of the key type; thus the key type must >>>> not be a >>>> >>> >> // function, map, or slice." >>>> >>> >> // >>>> >>> >> // Delay this check because it requires fully setup >>>> types; >>>> >>> >> // it is safe to continue in any case (was issue 6667). >>>> >>> >> check.later(func() { >>>> >>> >> if !Comparable(typ.key) { >>>> >>> >> check.errorf(e.Key.Pos(), "invalid map key type >>>> %s", typ.key) >>>> >>> >> } >>>> >>> >> }) >>>> >>> >> // Comparable reports whether values of type T are comparable. >>>> >>> >> func Comparable(T Type) bool { >>>> >>> >> switch t := T.Underlying().(type) { >>>> >>> >> case *Basic: >>>> >>> >> // assume invalid types to be comparable >>>> >>> >> // to avoid follow-up errors >>>> >>> >> return t.kind != UntypedNil >>>> >>> >> case *Pointer, *Interface, *Chan: >>>> >>> >> return true >>>> >>> >> case *Struct: >>>> >>> >> for _, f := range t.fields { >>>> >>> >> if !Comparable(f.typ) { >>>> >>> >> return false >>>> >>> >> } >>>> >>> >> } >>>> >>> >> return true >>>> >>> >> case *Array: >>>> >>> >> return Comparable(t.elem) >>>> >>> >> } >>>> >>> >> return false >>>> >>> >> } >>>> >>> > >>>> >>> > -- >>>> >>> > 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...@googlegroups.com. >>>> >>> > For more options, visit https://groups.google.com/d/optout. >>>> > >>>> > -- >>>> > 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...@googlegroups.com. >>>> > For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "golang-nuts" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/golang-nuts/Z0XQueZFoVw/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> golang-nuts+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > -- > 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. > For more options, visit https://groups.google.com/d/optout. > -- 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. For more options, visit https://groups.google.com/d/optout.