I did end up asking git, why this was done and it gave this answer
<https://github.com/golang/go/commit/2d9378c7f6dfbbe82d1bbd806093c2dfe57d7e17>,
which links to this discussion <https://github.com/golang/go/issues/6398>.

Hope that helps

On Fri, Feb 2, 2018 at 5:18 PM, <d...@veryhaha.com> wrote:

>
>
> On Friday, February 2, 2018 at 10:45:58 AM UTC-5, Axel Wagner wrote:
>>
>> From the spec:
>>
>>
>>> If the switch expression evaluates to an untyped constant, it is first
>>> converted to its default type; if it is an untyped boolean value, it is
>>> first converted to type bool. The predeclared untyped value nil cannot be
>>> used as a switch expression.
>>
>>
>> The current behavior is still as specified. Given that there is an
>> explicit statement about how this is handled makes it less convincing,
>> however, that the spec would be more complicated with a different behavior.
>> So you might still file a language change request, if you want.
>>
>
> but, why design as such? Isn't untyped bool more convenient?
>
>
>>
>> On Fri, Feb 2, 2018 at 4:39 PM, <di...@veryhaha.com> wrote:
>>
>>>
>>>
>>> On Friday, February 2, 2018 at 10:37:24 AM UTC-5, di...@veryhaha.com
>>> wrote:
>>>
>>>>
>>>>
>>>> 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> 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":
>>>>
>>> and sorry again, here "should", I mean "show".
>>>
>>>
>>>>
>>>> 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...@googlegroups.com.
>>> 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.
>

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