On Fri, 2016-08-05 at 08:57 -0700, dc0d wrote:
> In Go we can write:
> 
> if _, ok := input.(*data); ok {
> //...
> }
> 
> Why is it we can't do that in the case clause of a switch statement:
> 
> switch {
> case x1,ok:=input.(*data1); ok && otherCond1:
> case x2,ok:=input.(*data2); ok && otherCond2:
> }
> 
> (I've read the language specification - which BTW speaks about the "case 
> expressions" - I'm just curious about the reason)

In the more general case there are times that this might be nice, but
isn't the above more clearly expressible as

switch x := input.(type) {
case *data1:
        if !otherCond1 {
                break
        }
        // stuff
case *data2:
        if !otherCond2 {
                break
        }
        // stuff
}

since it's really a type switch.

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