if 和 else

if 的简短语句中声明的变量同样可以在任何对应的 else 块中使用。

(在 mainfmt.Println 调用开始前,两次对 pow 的调用均已执行并返回其各自的结果。)

if-and-else.go

  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. // 这里开始就不能使用 v 了
  13. return lim
  14. }
  15. func main() {
  16. fmt.Println(
  17. pow(3, 2, 10),
  18. pow(3, 3, 20),
  19. )
  20. }