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.

Reply via email to