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 <javascript:>> > 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 know this conversation has had some discussion of the alias types > "byte" and "rune". The spec defines those types as aliases. It is > not the case that there is a type "byte" that is identical to the type > "uint8". Instead, the name "byte" is an alias for the type "uint8". > > It's also worth considering this in connection with proposal #16339, > which introduces user-defined aliases, including type aliases. > > Ian > -- 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.