もしとそれ以外

if の短いステートメント内で宣言された変数は、else ブロック内でも利用可能です。

(pow への両方の呼び出しは、main での fmt.Println への呼び出しが始まる前にその結果を返します。)

  1. package main
  2. import (
  3. "fmt"
  4. "math"
  5. )
  6. func pow(x, n, lim float64) float64 {
  7. if v := math.Pow(x, n); v < lim {
  8. return v
  9. } else {
  10. fmt.Printf("%g >= %g\n", v, lim)
  11. }
  12. // can't use v here, though
  13. return lim
  14. }
  15. func main() {
  16. fmt.Println(
  17. pow(3, 2, 10),
  18. pow(3, 3, 20),
  19. )
  20. }