Flow control statements
(B) Loops and iteration
For
JS
for(let i=0;i<10;i++){
console.log(i);
}
Go
for i := 0; i < 10; i++ {
fmt.Println(i)
}
While
In Go, the for
's init and post statement are optional, effectively making it also a "while" statement:
JS
var i=0;
while(i<10){
console.log(i);
i++;
}
Go
i := 0
for i < 10 {
fmt.Println(i)
i++
}
Iterating over an Array/Slice
JS
['Rick','Morty','Beth','Summer','Jerry'].forEach(function(value,index){
console.log(value + ' at index ' + index);
});
Go
for i, v := range []string{"Rick", "Morty", "Beth", "Summer", "Jerry"} {
fmt.Printf("%v at index %d", v, i)
}
(B) If/Else
Go's if
can contain an init statement, with variables declared scoped only to the if
and else
blocks.
Go
if value := getSomeValue(); value < limit {
return value
} else {
return value / 2
}
(D) Switch
The switch statement was one of the motivation for writing this document.
Go defaults to break, and fallthrough
needed for otherwise.
Javascript defaults to fallthrough, and break
needed for otherwise.
JS
switch (favorite) {
case "yellow":
console.log("yellow");
break;
case "red":
console.log("red");
case "purple":
console.log("(and) purple");
default:
console.log("white");
}
Go
switch favorite {
case "yellow":
fmt.Println("yellow")
case "red":
fmt.Println("red")
fallthrough
case "purple":
fmt.Println("(and) purple")
default:
fmt.Println("white")
}