使用 if/else 表达式测试条件
在任何编程语言中,最基本的控制流都是 if/else
语句。 在 Go 中,if/else
语句非常简单。 但是,你需要先了解一些差异,然后才能得心应手地编写 Go 程序。
让我们看看 if
语句的 Go 语法。
if 语句的语法
与其他编程语言不同的是,在 Go 中,你不需要在条件中使用括号。 else
子句可选。 但是,大括号仍然是必需的。 此外,为了减少行,Go 不支持三元 if
语句,因此每次都需要编写完整的 if
语句。
下面是 if
语句的一个基本示例:
package main
import "fmt"
func main() {
x := 27
if x%2 == 0 {
fmt.Println(x, "is even")
}
}
在 Visual Studio Code 中,如果你的 Go 语法在条件中包含括号,系统会在你保存程序时自动删除括号。
复合 if 语句
Go 支持复合 if
语句。 可以使用 else if
语句对语句进行嵌套。 下面是一个示例:
package main
import "fmt"
func givemeanumber() int {
return -1
}
func main() {
if num := givemeanumber(); num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has only one digit")
} else {
fmt.Println(num, "has multiple digits")
}
}
请注意,在此代码中,num
变量存储从 givemeanumber()
函数返回的值,并且该变量在所有 if
分支中可用。 但是,如果尝试在 if
块之外输出 num
变量的值,则会出现如下错误:
package main
import "fmt"
func somenumber() int {
return -7
}
func main() {
if num := somenumber(); num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
fmt.Println(num)
}
运行程序时,错误输出如下所示:
# command-line-arguments
./main.go:17:14: undefined: num
在 Go 中,在 if
块内声明变量是惯用的方式。 这是一种使用在 Go 中常见的约定进行高效编程的方式。