go if语法
go if语句自身的特点
和 Go 函数一样,if 语句的分支代码块的左大括号与 if 关键字在同一行上,这也是 Go 代码风格的统一要求,gofmt 工具会帮助我们实现这一点;
if 语句的布尔表达式整体不需要用括号包裹,一定程度上减少了开发人员敲击键盘的次数。而且,if 关键字后面的条件判断表达式的求值结果必须是布尔类型,即要么是 true,要么是 false
操作符优先级
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 }