本文为译文。原文地址:if else
由于本文整体概念比较简单,所以译者主要翻译一些go里独有的一些语法点。其余的和其他语言没啥两样。如有需要可以直接看原文。
if声明语法
if condition {
}
package main
import (
"fmt"
)
func main() {
num := 10
if num%2 == 0 { //checks if number is even
fmt.Println("The number", num, "is even")
return
}
fmt.Println("The number", num, "is odd")
}
if else 声明
if condition {
} else {
}
package main
import (
"fmt"
)
func main() {
num := 11
if num%2 == 0 { //checks if number is even
fmt.Println("the number", num, "is even")
} else {
fmt.Println("the number", num, "is odd")
}
}
If ... else if ... else statement
if condition1 {
...
} else if condition2 {
...
} else {
...
}
赋值if语句
如果if声明中,存在多个赋值语句。先顺序执行赋值语句,然后再进行条件判断。
声明的变量的作用域只限于if else空间。
if assignment-statement; condition {
}
gotcha
else声明块必须和if块结尾的}相连。不然会报错。这是因为**go会自动的插入分号。**可以参考go插入分号的规则golang.org/ref/spec#Se…
package main
import (
"fmt"
)
func main() {
num := 10
if num % 2 == 0 { //checks if number is even
fmt.Println("the number is even")
}
else {
fmt.Println("the number is odd")
}
}
./prog.go:12:5: syntax error: unexpected else, expecting }
...
if num%2 == 0 {
fmt.Println("the number is even")
}; //semicolon inserted by Go Compiler
else {
fmt.Println("the number is odd")
}
go的惯用写法
我们之前的例子是这样的
package main
import (
"fmt"
)
func main() {
if num := 10; num % 2 == 0 { //checks if number is even
fmt.Println(num,"is even")
} else {
fmt.Println(num,"is odd")
}
}
go的开发哲学中,需要避免不重要的开发分支和不必要的缩进。当满足条件时应该尽早的返回数据。代码优化如下
package main
import (
"fmt"
)
func main() {
num := 10;
if num%2 == 0 { //checks if number is even
fmt.Println(num, "is even")
return
}
fmt.Println(num, "is odd")
}