title: “FOR” author: “laplante@plcb.ca” date: 2023-04-17 version: “1.0.0” section: “1g”
The for
statement is used to create loops in GoWeb.
It provides three main forms of iteration:
This flexibility allows for
loops to handle numeric ranges, condition-based repetition, and direct traversal of collections.
A for increment loop in GoWeb follows the syntax:
forincr: FOR forinit ; logical_expression ; forend { stmt_list }
res={{
for pierre := 1 ;
pierre < 10;
pierre = pierre + 1 {
pierre;
}
}}.
return
res=123456789.
res={{
for pierre := 1 ; pierre < 10; pierre = pierre + 1 {
"P"; pierre; " ";
for chantal := pierre; chantal < 10 ; chantal = chantal + 1 {
"C"; chantal; " ";
}
}
}}.
return
res=P1 C1 C2 C3 C4 C5 C6 C7 C8 C9 P2 C2 C3 C4 C5 C6 C7 C8 C9 P3 C3 C4 C5 C6 C7 C8 C9 P4 C4 C5 C6 C7 C8 C9 P5 C5 C6 C7 C8 C9 P6 C6 C7 C8 C9 P7 C7 C8 C9 P8 C8 C9 P9 C9 .
A for expression loop has the following syntax:
forexpr: FOR logical_expression { stmt_list }
res={{
i := 50;
for i > 0 {
i; ' ';
i = i - 2;
}
}}.
res=50 48 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 .
res={{
i := 5;
for i > 0 {
'i='; i; ' ';
i = i - 1;
j := i;
for j > 0 {
'j='; j; ' ';
j = j - 1;
k := j;
for k > 0 {
'k='; k; ' ';
k = k - 1;
}
}
}
}}.
res=i=5 j=4 k=3 k=2 k=1 j=3 k=2 k=1 j=2 k=1 j=1 i=4 j=3 k=2 k=1 j=2 k=1 j=1 i=3 j=2 k=1 j=1 i=2 j=1 i=1 .
A for in loop is used to iterate over arrays or maps.
When iterating over an array, each iteration returns:
index
value
When iterating over a map, each iteration returns:
index
key
value
res={{
var := [1,2,3];
var2 := [4,5];
var3 := { "x1" : 1, "x2" : 2.2, "x3" : true, "x4": "string", "x5":[7,8,9]};
for i in var {
"i="; i; "\n";
for j in var2 {
"\tj="; j; "\n";
for k in var3 {
"\t\tk="; k; "\n";
}
}
}
}}
return
res=i={"index":0,"value":1}
j={"index":0,"value":4}
k={"index":0,"key":"x1","value":1}
k={"index":1,"key":"x2","value":2.2}
k={"index":2,"key":"x3","value":true}
k={"index":3,"key":"x4","value":"string"}
k={"index":4,"key":"x5","value":[7,8,9]}
j={"index":1,"value":5}
k={"index":0,"key":"x1","value":1}
k={"index":1,"key":"x2","value":2.2}
k={"index":2,"key":"x3","value":true}
k={"index":3,"key":"x4","value":"string"}
k={"index":4,"key":"x5","value":[7,8,9]}
i={"index":1,"value":2}
j={"index":0,"value":4}
k={"index":0,"key":"x1","value":1}
k={"index":1,"key":"x2","value":2.2}
k={"index":2,"key":"x3","value":true}
k={"index":3,"key":"x4","value":"string"}
k={"index":4,"key":"x5","value":[7,8,9]}
j={"index":1,"value":5}
k={"index":0,"key":"x1","value":1}
k={"index":1,"key":"x2","value":2.2}
k={"index":2,"key":"x3","value":true}
k={"index":3,"key":"x4","value":"string"}
k={"index":4,"key":"x5","value":[7,8,9]}
i={"index":2,"value":3}
j={"index":0,"value":4}
k={"index":0,"key":"x1","value":1}
k={"index":1,"key":"x2","value":2.2}
k={"index":2,"key":"x3","value":true}
k={"index":3,"key":"x4","value":"string"}
k={"index":4,"key":"x5","value":[7,8,9]}
j={"index":1,"value":5}
k={"index":0,"key":"x1","value":1}
k={"index":1,"key":"x2","value":2.2}
k={"index":2,"key":"x3","value":true}
k={"index":3,"key":"x4","value":"string"}
k={"index":4,"key":"x5","value":[7,8,9]}
res={{
v := [1,2,3];
for i in v {
"i="; i;
k := i.index;
v[k] = 2*k;
}
"v="; v;
"i="; i;
}}
res=i={"index":0,"value":1}i={"index":1,"value":2}i={"index":2,"value":3}v=[0,2,4]i={"index":2,"value":3}