title: “GoWeb SWITCH Expression” author: “Pierre Laplante” date: 2025-08-30 version: “1.0.0” section: “1g”
This document explains how the switch expression works in GoWeb.
A switch expression allows execution to branch into different cases depending on the value of an expression.
It also supports the fallthrough keyword, which continues execution into the next case instead of breaking.
The general syntax of a switch expression is:
switch expression {
case expression[, expression]*:
...
case expression[, expression]*:
...
fallthrough;
default:
...
}
switch evaluates the given expression and selects the matching case branch.default branch is executed.fallthrough allows execution to continue into the next case, even if it does not match.res={
func f(x) {
switch x {
case x < 0:
"Case x<0";
case x > 7:
"Case x>7";
case 5:
"Case is 5";
default:
"Default";
}
}
f(6);
f(5);
f(8);
f(-10);
f(0);
func f2(x) {
switch {
case x < 0:
"Case x<0";
case x > 0:
"Case x>0";
default:
"Default";
}
}
f2(5);
f2(-10);
f2(0);
}
Result:
res=DefaultCase is 5Case x>7Case x<0DefaultCase x>0Case x<0Default.
res={
func f(x, y) {
switch x {
case x < 0:
"Case x<0";
case x > 7:
"Case x>7";
case 5:
"Case is 5";
switch y {
case y < 0:
"y<0";
case y > 5:
"y>5";
case 4:
"y==4";
default:
"default y";
}
default:
"Default x";
}
}
f(-1, 0);
f(8, 0);
f(5, -1);
f(5, 6);
f(5, 4);
f(5, 2);
}
Result:
res=Case x<0Case x>7Case is 5y<0Case is 5y>5Case is 5y==4Case is 5default y.
fallthroughres={
func f(x) {
switch x {
case x < 0:
"Case x<0";
fallthrough;
case x < -2:
"Case x<-2";
case x > 7:
"Case x>7";
x:=7;
case 5:
"Case is 5";
fallthrough;
default:
"Default";
}
}
f(-5);
f(8);
f(5);
}
Result:
res=Case x<0Case x<-2Case x>7Case is 5Default.
res={
func f(x) {
switch x {
case x < 0:
"Case x<0";
fallthrough;
case x < -2:
"Case x<-2";
case x > 7:
"Case x>7";
x:=7;
case 2,3,4,5:
"Case is 5";
default:
"Default";
}
}
f(-5);
f(8);
f(5);
f(4);
f(3);
f(2);
f(1);
}
Result:
res=Case x<0Case x<-2Case x>7Case is 5Case is 5Case is 5Case is 5Default.
res={
func f(x) {
switch x {
case "ab":
"Case ab";
fallthrough;
case "bc":
"Case bc";
case re/a.*/, 'de', re/f.*/:
"Case re";
default:
"Default";
}
}
f("allo");
f("de");
f("fine");
f("good");
}
Result:
res=Case reCase reCase reDefault.
Pierre Laplante laplante@plcb.ca