Yes, and you can do that. > On Jan 26, 2019, at 3:36 PM, Victor Giordano <vitucho3...@gmail.com> wrote: > > Probably i need to reveal the underlying problem i was trying to solve > > At a glande: an appoinment subsystem for a health organization, considering > practitioners that work on services offering practices that refers to > billables items, the practices may need one or more equipment, also taking > into accountg the practitioners availability expressed in relative periodic > terms (weekly for example) and absoulte terms (a given day on the cosmos) and > their holidays, and the location where the patient-doctor encounter will > occur, also consdiering the center (a heath organization has one or many) > holidays. > > So need to resolve availabiltiies to determine when a given practice can be > performe. I have several structs represeting the entties involved in the > process (the one marked in bold), for each one of these structs there is a > theorical availbility and a actual usage that leads you to calculate the > actual availlity, so everything related to the availabilty of these enties > need to be placed somewhere, so my original idea was to associate each > algoritm with the struct but without writing the algorithms as part of the > struct, a map comes in handy here. > > > El sáb., 26 ene. 2019 a las 16:31, Wagner Riffel (<wgrrif...@gmail.com > <mailto:wgrrif...@gmail.com>>) escribió: > 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 <https://play.golang.org/p/cuMlPeqR7Qb> > > > On Sat, Jan 26, 2019, 3:26 PM Victor Giordano <vitucho3...@gmail.com > <mailto: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 > <mailto: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 > <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 > >>> > <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 > > <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 > <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 > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <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 > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <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 > <mailto:golang-nuts+unsubscr...@googlegroups.com>. > For more options, visit https://groups.google.com/d/optout > <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.