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