导入
if 语句
本课通过示例讲解如何在 Go 语言中使用 if 语句。
与其他语言的对比
if 语句的写法与 C 或 Java 中类似,只是去掉了条件外的 ( ),并且必须使用 { }。和 for 一样,if 语句可以在条件前以一条短语句开始,该短语句会在判断条件前执行。在 if 语句中声明的变量仅在 if 的整个作用域内有效,包括后续的 else 块。
if语句示例:
1if answer != 42 { 2 return "Wrong answer" 3}
以下是一个完整示例,帮助你更好地理解这一概念:
1package main 2 3import ( 4 "fmt" 5 "math" 6) 7 8func sqrt(x float64) string { 9 if x < 0 { 10 return sqrt(-x) + "i" 11 } 12 return fmt.Sprint(math.Sqrt(x)) 13} 14 15func main() { 16 fmt.Println(sqrt(2), sqrt(-4)) 17}
- 在
if短语句中声明变量的示例:
1if err := foo(); err != nil { 2 panic(err) 3}
以下是使用该特性的完整示例:
1package main 2 3import ( 4 "fmt" 5 "math" 6) 7 8func pow(x, n, lim float64) float64 { 9 if v := math.Pow(x, n); v < lim { 10 return v 11 } 12 return lim 13} 14 15func main() { 16 fmt.Println( 17 pow(3, 2, 10), 18 pow(3, 3, 20), 19 ) 20}
示例
if和else块的示例:
1package main 2 3import ( 4 "fmt" 5 "math" 6) 7 8func pow(x, n, lim float64) float64 { 9 if v := math.Pow(x, n); v < lim { 10 return v 11 } else { 12 fmt.Printf("%g >= %g\n", v, lim) 13 } 14 // 此处无法再使用变量 v 15 return lim 16} 17 18func main() { 19 fmt.Println( 20 pow(3, 2, 10), 21 pow(3, 3, 20), 22 ) 23}
了解了 Go 中 if 语句的用法后,下一课我们将继续学习 Go 中的 for 循环。