go if语句自身的特点

和 Go 函数一样,if 语句的分支代码块的左大括号与 if 关键字在同一行上,这也是 Go 代码风格的统一要求,gofmt 工具会帮助我们实现这一点;

if 语句的布尔表达式整体不需要用括号包裹,一定程度上减少了开发人员敲击键盘的次数。而且,if 关键字后面的条件判断表达式的求值结果必须是布尔类型,即要么是 true,要么是 false

 

操作符优先级

go if语法_go

func main() {
a, b := false,true
if a && b != true {
println("(a && b) != true")
return
}
println("a && (b != true) == false")
}

//print: a && (b != true) == false

语句形式

单分支

if t1 := true; t1 {
fmt.Println("t1 is true")
}

二分支、多分支

var v2 int = 10
if v2 > 10 {
fmt.Println("v2>10!")
} else if v2 > 5 {
fmt.Println("10>=v2>5")
} else {
fmt.Println("v3<=5")
}

if 自用变量

在 if 语句中声明自用变量是 Go 语言的一个惯用法,这种使用方式直观上可以让开发者有一种代码行数减少的感觉,提高可读性。

同时,由于这些变量是 if 语句自用变量,它的作用域仅限于 if 语句的各层隐式代码块中,if 语句外部无法访问和更改这些变量,这就让这些变量具有一定隔离性,这样你在阅读和理解 if 语句的代码时也可以更聚焦。

 

快乐路径

Go 社区把这种 if 语句的使用方式称为 if 语句的“快乐路径(Happy Path)”原则,所谓“快乐路径”也就是成功逻辑的代码执行路径,

它的特点是这样的:

仅使用单分支控制结构;

当布尔表达式求值为 false 时,也就是出现错误时,在单分支中快速返回;

正常逻辑在代码布局上始终“靠左”,这样读者可以从上到下一眼看到该函数正常逻辑的全貌;

函数执行到最后一行代表一种成功状态。

if v2 > 10 {
fmt.Println("v2>10!")
return
}

if v2 > 5 {
fmt.Println("10>=v2>5")
return
}