第2回目。

whileっぽく書ける

;を省略して書くことでwhileっぽく書ける。

sum := 1
for sum < 1000 {
  sum += sum
}
fmt.Println(sum)

すごくシンプル。

無限ループはこう書くらしい。

for {
}

if文の省略形

SwiftのOptional Bindingに似たような書き方ができる。

if v = math.Pow(x, n); v < lim {
  return v
}

上記のvはif文の中でしか使えない。便利な書き方だなぁ。条件を連続して書けるのも良い。

条件のないswitch

条件なしのswitchを用いて冗長なif-then-elseを書かないようにしよう、と書いている。これは激しく同意。

switch {
  case t.Hour() < 12:
    fmt.Println("Good morning")
  case t.Hour() < 17:
    fmt.Println("Good afternoon")
  default:
    fmt.Println("Good evening")
}

網羅的で条件がひと目で分かる。if-elseよりも圧倒的に見やすい。

Swiftも同じ書き方ができるけど、条件がtrue/falseの時はif文、3つ以上の条件がある場合はswitchみたいな使い分けをしている。

deferはスタックされる

多分他の言語でもそうだけど、忘れそうなので書いておこう。

func main() {
	fmt.Println("counting")

	for i := 0; i < 10; i++ {
		defer fmt.Println(i)
	}

	fmt.Println("done")
}
// counting
// done
// 9
// 8
// 7
// 6
// 5
// 4
// 3
// 2
// 1
// 0

きょうはここまで。次は型の章なのかな?