Browse Source

敷衍一下

YWJL 2 years ago
parent
commit
8ac9bad180
1 changed files with 67 additions and 0 deletions
  1. 67 0
      Go语言101/入门.md

+ 67 - 0
Go语言101/入门.md

@@ -628,15 +628,82 @@ import time "time" // <=> import "time"
 2. for 循环代码块
 3. switch-case 多条件分支代码块
 
+**特殊流程控制代码块**
 
+1. 容器类型相关的 for-range 循环代码块
+2. 接口类型相关的 type-switch 多条件分支代码块
+3. 通道类型相关的 select-case 多分支代码块
 
+### if-else
 
+一个if-else条件分支控制代码块的完整形式如下:
 
+```go
+1| if InitSimpleStatement; Condition {
+2| // do something
+3| } else {
+4| // do something
+5| }
+
+12| if n := rand.Int(); n%2 == 0 {
+13| fmt.Println(n, "是一个偶数。")
+14| } else {
+15| fmt.Println(n, "是一个奇数。")
+16| }
+
+```
+
+InitSimpleStatement 是初始化部分,可忽略,如果有初始化,变量域只包括当前if-else代码块中
+
+### for
+
+for循环代码块的完整形式如下:
+
+```go
+1| for InitSimpleStatement; Condition; PostSimpleStatement {
+2| // do something
+3| }
 
+1| for i := 0; i < 10; i++ {
+2| fmt.Println(i)
+3| }
+```
 
+for 循环 如果条件表达式部分被省略,则编译器视其为true。
 
+```go
+1| for i := 0; ; i++ { // 等价于:for i := 0; true; i++ {
+2| if i >= 10 {
+3| break
+4| }
+5| fmt.Println(i)
+6| }
+7|
+8| // 下面这几个循环是等价的。
+9| for ; true; {
+10| }
+11| for true {
+12| }
+13| for ; ; {
+14| }
+15| for {
+16| }
+```
+
+循环体内声明的同名变量,是新变量。
 
+```go
+1| for i := 0; i < 3; i++ {
+2| fmt.Print(i)
+3| i := i // 这里声明的变量i遮挡了上面声明的i。
+4| // 右边的i为上面声明的循环变量i。
+5| i = 10 // 新声明的i被更改了。
+6| _ = i
+7| }
+//输出:012
+```
 
+# 协程、延迟函数调用、恐慌和恢复