On Friday, February 2, 2018 at 10:27:04 AM UTC-5, Ian Lance Taylor wrote:
>
> On Fri, Feb 2, 2018 at 7:10 AM,  <di...@veryhaha.com <javascript:>> 
> wrote: 
> > 
> > Why not make it untyped? 
> > 
> > package main 
> > 
> > type T bool 
> > 
> > func f() T {return T(false)} 
> > 
> > func main() { 
> >     switch { 
> >     case f(): // invalid case f() in switch (mismatched types T and 
> bool) 
> >     } 
> > } 
>
> The current language spec says that omitting the switch expression is 
> equivalent to writing `true`.  If you actually write `true`, then, 
> following the usual rules for untyped constant expressions, it will 
> receive the type `bool`, and you would get the same mismatched type 
> error.  You will see a similar case if you write `switch 0` and try to 
> compare with a named version of `int`.  So the compiler is following 
> the language spec as currently written. 
>
> We could change the language spec to say that omitting the switch 
> expression is not equivalent to writing `true`, but instead, as you 
> suggest, compares each case to an untyped `true` value.  I think the 
> main argument against that is that it makes the spec slightly more 
> complicated while bringing very little benefit.  You could write it up 
> as a language change proposal if you like. 
>
> Ian 
>

> If you actually write `true`, then,
> following the usual rules for untyped constant expressions,
> it will receive the type `bool`,

But, in my expression, the result of a constant expression is still untyped.
And "true" is a per-declared untyped boolean value.

And, here is another example to should the untyped result is converted to 
type "bool":

package main

type T bool

func f() T {return T(false)}

func main() {
    switch true == true {
    case f(): // invalid case f() in switch (mismatched types T and bool)
    }
}


-- 
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