forked from unknwon/the-way-to-go_ZH_CN
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
zl
committed
Apr 18, 2013
1 parent
e6ef014
commit fa63394
Showing
1 changed file
with
49 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |