For
sum := 0 for i := 0; i < 10; i++ { sum += i }
while的な記述
sum := 1 for sum < 1000 { sum += sum }
If
括弧 ( ) は不要。
if x < 0 { fmt.Println(x) }else{ fmt.Println(x) }
If with a short statement
ifの評価前にステートメントを記述できる。
またこのステートメントで宣言された変数はif内のみのスコープとなr。
if v := math.Pow(x, n); v < lim {
fmt.Println(v)
}
Switch
breakは不要。上から下へcaseを評価し、条件に合ったcaseで自動的にbreakする。以降の全ての case は実行されない。
switch os := runtime.GOOS; os { case "darwin": fmt.Println("OS X.") case "linux": fmt.Println("Linux.") default: fmt.Printf("%s.", os) }
Switch with no condition
Switchに与える条件を省略するとtrue
が条件となる。
switch { case t.Hour() < 12: fmt.Println("Good morning!") case t.Hour() < 17: fmt.Println("Good afternoon.") default: fmt.Println("Good evening.") }
Defer
deferへ渡した関数は、呼び出し元がreturnするまで実行を遅延させる。
// hello world func main() { defer fmt.Println("world") fmt.Println("hello") }
deferへ複数渡した場合はlast-in-first-outで実行される。
//done 9 8 7 6 ... func main() { fmt.Println("counting") for i := 0; i < 10; i++ { defer fmt.Println(i) } fmt.Println("done") }
リンク
リンク