|
|
@@ -0,0 +1,49 @@
|
|
|
+#5.1 if else 结构
|
|
|
+if 判断一个条件(boolean类型或是否合理)语句:如果该条件成立,则执行if之后{}之间的语句,如果不成立if结构将被忽略,继续执行if之后的代码.
|
|
|
+ if condition {
|
|
|
+ // do something
|
|
|
+ }
|
|
|
+在两个分支的情况下,可以在if condition{}之后添加else{}结构,当if condition条件不成立时,执行else{}之间的语句;if else两个独立的分支(只能有一个执行)
|
|
|
+ if condition {
|
|
|
+ // do something
|
|
|
+ } else {
|
|
|
+ // do something
|
|
|
+ }
|
|
|
+在三个分支的情况下,可以在else之后加上if condition,那么我们有了三个独立的分支.
|
|
|
+ if condition1 {
|
|
|
+ // do something
|
|
|
+ } else if condition2 {
|
|
|
+ // do something else
|
|
|
+ }else {
|
|
|
+ // catch-all or default
|
|
|
+ }
|
|
|
+else if 分支的数量是没有限制的,但是为了代码的可读性,还是不要在if 后面加入太多的else if结构.当使用这种形式时,把最有可能成立的条件,放在最前面.即使当{}之间只有一条语句时,{}也不可省略.(有些人不喜欢这样.从另一方面来说,这样代码更一致,符合主流的软件工程原则.)
|
|
|
+if和else 之后的大括号{ 必须和if 或else 在同一行. else if 和 else 必须与他们前一个结构的结束大括号 } 在同一行.这些规则是强制性的,否则不能编译通过.
|
|
|
+
|
|
|
+非法的Go代码:
|
|
|
+ if x{
|
|
|
+ }
|
|
|
+ else { //INVALID
|
|
|
+ }
|
|
|
+
|
|
|
+注意每个分支被缩进了4(或者8)个空格或1个tab,并且结束大括号}和if是垂直对齐的;执行gofmt时,这些会自动执行.
|
|
|
+
|
|
|
+有时,条件两边的括号()是可以省略的,当条件比较复杂时,使用括号()可以让代码更清楚.条件可以是复合条件,使用逻辑操作符&&, || 和!,通过使用()可以强制优先级,提高代码可读性.
|
|
|
+
|
|
|
+一种可能的应用是测试变量值,在不同的情况下,执行不同的语句,但是5.3章节讲到的switch语句更适合这种场景.
|
|
|
+
|
|
|
+Listing 5.1 - booleans.go:
|
|
|
+ package main
|
|
|
+ import “fmt”
|
|
|
+ func main() {
|
|
|
+ bool1 := true
|
|
|
+ if bool1 {
|
|
|
+ fmt.Printf(“The value is true\n”)
|
|
|
+ } else {
|
|
|
+ fmt.Printf(“The value is false\n”)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Output: The value is true
|
|
|
+注意 不需要判断if bool1 == true,因为bool1已经是一个boolean类型的值.
|
|
|
+
|
|
|
+#TODO
|