Ok, in fact, this is really a problem about how to comprehend the words in go spec.
There are two different interpretations of the words for the following two questions, 1. what does "the same type-spec" mean? 2. what does "two named types" mean? Your interpretations: 1. "the same type-spec" <=> the same existence of the type declaration. 2. "two named types" may refer two occurrences of a type. In your example, https://play.golang.org/p/grhDxuVjeP, there are two As in "A(42)", you call them "two named types". My interpretations: 1. "the same type-spec" <=> same type-specs literally 2. "two named types" means two types come from different type-specs. If there are two occurrences of a type, they can't be called "two named types". In your example, https://play.golang.org/p/grhDxuVjeP, the two As in "A(42)" are just two occurrences of a same type. I feel it is inappropriate to say they are "two named types". On Sunday, October 2, 2016 at 3:03:38 PM UTC+8, Axel Wagner wrote: > > So, I don't really get what's the problem here, tbh. The spec seams > perfectly fine as it is right now to me. > > * If two named types come from different type-specs, they are not treated > as identical. We covered how that can happen. > * If two named types come from the same type-spec, then they are > identical. The necessity of this should also be clear: > https://play.golang.org/p/grhDxuVjeP > > So, what exactly is the issue here? Yes, it is not possible to declare two > distinct types with the same type-spec or two identical types with the same > type-spec, but clearly, if that sentence wasn't in the spec, above > comparison would need to equal false (as the types would not be identical). > > I don't think there is any ambiguity or lack of clarity here. > > On Sun, Oct 2, 2016 at 7:08 AM, T L <tapi...@gmail.com <javascript:>> > wrote: > >> >> >> On Sunday, October 2, 2016 at 12:24:24 PM UTC+8, Ian Lance Taylor wrote: >> >>> On Sat, Oct 1, 2016 at 9:21 PM, T L <tapi...@gmail.com> wrote: >>> > >>> > On Sunday, October 2, 2016 at 12:17:05 PM UTC+8, Ian Lance Taylor >>> wrote: >>> >> >>> >> On Sat, Oct 1, 2016 at 10:56 AM, T L <tapi...@gmail.com> wrote: >>> >> > >>> >> > On Sunday, October 2, 2016 at 12:38:00 AM UTC+8, Ian Lance Taylor >>> wrote: >>> >> >> >>> >> >> On Sat, Oct 1, 2016 at 8:55 AM, T L <tapi...@gmail.com> wrote: >>> >> >> > >>> >> >> > On Saturday, October 1, 2016 at 11:29:35 PM UTC+8, Axel Wagner >>> wrote: >>> >> >> >> >>> >> >> >> It *is* possible to define two named types with the same name >>> (which >>> >> >> >> are >>> >> >> >> not identical according to the spec): >>> >> >> >> https://play.golang.org/p/PmkcvdNQnx >>> >> >> > >>> >> >> > >>> >> >> > Oh, never know we can define local types! >>> >> >> > >>> >> >> > But, from my understanding, according to the spec, the two local >>> X >>> >> >> > types >>> >> >> > are >>> >> >> > identical. >>> >> >> > But the compiler doesn't think so. >>> >> >> > A compiler bug? >>> >> >> >>> >> >> I'm sorry, I don't follow your argument. The spec says, as you've >>> >> >> already quoted, "Two named types are identical if their type names >>> >> >> originate in the same TypeSpec." In the playground example above, >>> the >>> >> >> two types named "X" do not originate in the same TypeSpec, so they >>> are >>> >> >> not identical. >>> >> > >>> >> > Then could you provide an example two identical custom named types >>> >> > originate >>> >> > in the same TypeSpec? >>> >> >>> >> I don't know what it means to have two identical custom named types. >>> >> When type T1 and type T2 are identical, they are the same type. When >>> >> they are identical named types, they have the same name, so we are >>> >> talking about types T and T. The question is: when is type T >>> >> identical to type T? The answer is: when both instances of T >>> >> originate in the same TypeSpec. And that answer makes sense, because >>> >> as we saw above it is entirely possible to have two types named T >>> that >>> >> do not originate in the same TypeSpec, and those types are not >>> >> identical. >>> > >>> > >>> > Copied from this issue thread, >>> https://github.com/golang/go/issues/17310 >>> > >>> > My English is really not good,..., I think the text "originate in the >>> same >>> > TypeSpec" should be changed to "originate in same one TypeSpec" >>> >>> I'm sorry, in my opinion that would not be good English. >>> >>> Ian >>> >> >> ;D >> >> ok, my current understanding is, the whole meaningfulness of this line in >> go spec >> >> Two named types <https://golang.org/ref/spec#Types> are identical if >> their type names originate in the same TypeSpec >> <https://golang.org/ref/spec#Type_declarations>. >> >> is to explain in the following code >> >> type T0 AnotherType >> >> >> T0 and T0 are identical. >> >> >> -- >> 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 <javascript:>. >> 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.