Den mandag den 2. oktober 2017 kl. 21.33.04 UTC+2 skrev Dave Cheney: > > Back before aliases defined types used to be called named types, which > permitted the existence of unnamed types. > > map[string]string > > is an unnamed type > > type Dictionary map[string]string > > is a named type, its name is Dictionary > > And the rules of assignment permitted assignment from or to an unnamed > type. > > Aha, I see. Thanks for clarifying.
br. Chr. > On Tuesday, 3 October 2017 06:26:44 UTC+11, Christian Surlykke wrote: >> >> Forgive me if this has been asked before. I've not been able to find a >> diskussion about it. >> >> A snippet like this >> >> type AppleCount uint32 >> >> var i uint32 = 7 >> var ac AppleCount = i >> >> >> will fail to compile with an error like: >> >> cannot use i (type uint32) as type AppleCount in assignment >> >> >> OTOH code like this: >> >> type Dictionary map[string]string >> var m map[string]string = make(map[string]string) >> var d Dictionary = m >> >> >> compiles just fine. >> >> There is this about type definitions in The Go Programming Language >> Specification: >> >> *A type definition creates a new, distinct type with the same underlying >> type and operations as the given type, and binds an identifier to it.* >> >> TypeDef = identifier Type . >> >> *The new type is called a defined type. It is different from any other >> type, including the type it is created from.* >> >> >> which I would take to mean that the second snippet should be invalid. >> >> Is this a bug or 'working as intended'? If it's working as intended, can >> anyone explain the reasoning behind this? >> >> br. Christian Surlykke >> > -- 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.