for文等の繰り返し処理、分岐処理のあたりのまとめ。
For
for i := 0; i < 10; i++ {
sum += i
}
値の初期化・条件式・後処理の部分は割と他の書き方と一緒。
違いはカッコが無いくらい?
func main() {
sum := 1
for ; sum < 1000; {
sum += sum
}
fmt.Println(sum)
}
条件式以外は任意で、省略することも可能。
func main() {
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
}
セミコロンまで省略できちゃう。便利。
これでC言語にあるwhile
と同じような処理ができる。
package main
func main() {
for {
}
}
こうすれば無限ループも作れちゃう。らくちん。
If
func sqrt(x float64) string {
if x < 0 {
return sqrt(-x) + "i"
}
return fmt.Sprint(math.Sqrt(x))
}
if文もだいたい同じ。条件式のカッコは必要なくて、実行式の中かっこは必要。
func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v
}
return lim
}
if文の中でしか使えない、簡単なステートメントを定義することもできる。
スコープ外では使用不可。if文の中で使われている変数が、スコープ外で使えないってのと同じことやね。
func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v
} else {
fmt.Printf("%g >= %g\n", v, lim)
}
// can't use v here, though
return lim
}
else文の中でも使えちゃいます。