18. 変数宣言
Go
// どちらもsは、空文字
s := "" // 初期値から型が推測される
var s string // 型のゼロ値が設定される
// 以下のようにも書ける
var s = ""
var s string = ""
JavaScript
let s = ""; // ES6
var s = ""; // 関数ブロックスコープ
18
19. if
Go
x := 1
if x > 0 {
// ...
} else x < 0 {
// ...
}
JavaScript
var x = 1;
if (x > 0) {
// ...
} else (x < 0) {
// ...
}
19
20. ループ
Go
strs := {"あ", "い"}
for i := 0; i < len(strs); i++ {
// ...
}
JavaScript
var strs = ["あ", "い"];
for (var i = 0; i < strs.length; i++) {
// ...
}
20
21. ループ(range)
Go
strs := {"あ", "い"}
for i, s := range strs {
// ...
}
JavaScript
var strs = ["あ", "い"];
strs.forEach(function(s, i) {
// ...
});
21
22. ループ(条件のみ)
Go
for count < 10 {
// ...
}
// 無限ループ
for {
// ...
}
JavaScript
while (count < 10) {
// ...
}
// 無限ループ
while (true) {
// ...
} 22
23. switch
Go
x := 0
switch x {
case 0:
num = 1
// breakは不要
case 1:
num = 3
default:
num = -1
}
return num // 1
23
27. コンポジット型(配列?マップ)
Go
a := [3]int{1, 2, 3} // 配列(長さが固定)
b:= []int{0, 1, 2, 3, 4, 5} // スライス(長さが可変)
c := map[string]int { // 文字列からintへのマップ
"a": 1,
"b": 2,
}
JavaScript
var a = [1, 2, 3]; // ※長さが固定はない
var b = [1, 2, 3, 4, 5];
var c = { // マップをオブジェクトで表現
"a": 1,
"b": 2
}; 27
28. コンポジット型(構造体)
Go
// 構造体型の宣言
type Employee struct {
ID int
Name string
}
// 構造体変数の宣言
alice := Employee{0, "alice"}
JavaScript
// 構造体をオブジェクトで表現
var alice = {
ID: 0,
Name: "alice"
};
28
30. 関数宣言(可変個引数)
Go
func sum(vals ...int) int {
total := 0
for _, val := range vals {
total += val
}
return total
}
JavaScript
// 可変個引数はES6のみ
function sum(...vals) {
var total = 0
vals.forEach(function(val, i) {
total += val;
});
return total;
}
30