阅读 68

Go之旅(八)

原文

tour.golang.org/flowcontrol…

译文

If

Go的iffor类似,不需要用小括号()括起来,但是需要{}

package main

import (
	"fmt"
	"math"
)

func sqrt(x float64) string {
	if x < 0 {
		return sqrt(-x) + "i"
	}
	return fmt.Sprint(math.Sqrt(x))
}

func main() {
	fmt.Println(sqrt(2), sqrt(-4))
}
复制代码

包含短语句的If

for类似,if语句可以以一个短语句开始,并在条件语句之前运行。通过该语句声明的变量作用域只能在if结束之前。

package main

import (
	"fmt"
	"math"
)

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

func main() {
	fmt.Println(
		pow(3, 2, 10),
		pow(3, 3, 20),
	)
}
复制代码

If和Else

if短语句中声明的变量在所有的else中也可被访问。

package main

import (
	"fmt"
	"math"
)

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
}

func main() {
	fmt.Println(
		pow(3, 2, 10),
		pow(3, 3, 20),
	)
}
复制代码

(两次调用pow方法在调用main方法中的fmt方法之前返回)

文章分类
后端
文章标签