Groovy supports the usual if - else syntax from Java
Groovy also supports the normal Java "nested" if then else if syntax:
The switch statement in Groovy is backwards compatible with Java code; so you can fall through cases sharing the same code for multiple matches.
One difference though is that the Groovy switch statement can handle any kind of switch value and different kinds of matching can be performed.
Switch supports the following kinds of comparisons
default: must go at the end of the switch/case as Jochen outlined in this thread from the groovy-user mailing list which Jochen states:
"because a Java switch/Case does not work like a Groovy switch/case. In Java a case can take only int compatible constants, in Groovy it can take expressions. In Java all cases share a scope, in Groovy each case has its own scope. In Groovy we call the isCase method, in Java it has to be a number we switch with. If we for example use a closure as case, then this might cause side effects. There are cases where we can let them behave the same and usually when using the java version you won't see a difference in Groovy besides the placement and logic of default."
So, while in Java the default can be placed anywhere in the switch/case, the default in Groovy is used more as an else than assigning a default case.
The case statement performs a match on the case value using the isCase(switchValue) method, which defaults to call equals(switchValue) but has been overloaded for various types like Class or regex etc.
So you could create your own kind of matcher class and add an isCase(switchValue) method to provide your own kind of matching.