Golang 基础-方法、接口(第四章)

1. 判断

1.1. if-else 语句

1.1.1. 语法

1
2
3
4
5
6
7
8
9
// 形式一
if condition {
} else if condition {
} else {
}

// 形式二
if statement; condition {
}
  • { } 是必要的,即使只有一条语句
  • statement 可选,该组件在条件判断之前运行,作用域也在 if-else 代码块
  • else 语句应该在 if 语句的大括号 } 之后的同一行中。如果不是,编译器会不通过

1.2. switch 语句

1.2.1. 语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 形式一
switch condition {
case condition:
condition
case condition:
condition
case condition:
condition
...
default:
condition
}

// 形式二
switch statement; condition {...

// 形式三
switch {...
  • case 可包含多个表达,用逗号分隔
  • case 不允许出现重复项,否则编译器会不通过
  • default 不一定只能出现在 switch 语句的最后,它可以放在 switch 语句的任何地方
  • 与 if-else 声明形式二一样,可以在首行可选 statement
  • 表达式被省略,则表示这个 switch 语句等同于 switch true,true 值会和每一个 case 的求值结果进行匹配,相应的代码块也会被执行

1.2.2. Fallthrough 语句

每执行完一个 case 后,会直接从 switch 语句中跳出,使用 fallthrough 语句可以在已经执行完成的 case 之后,把控制权转移到下一个 case 的执行代码中。
fallthrough 语句应该是 case 子句的最后一个语句。如果它出现在了 case 语句的中间,编译器将会报错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func number() int {
num := 15 * 5
return num
}
func main() {
switch num := number(); { // num is not a constant
case num < 50:
fmt.Printf("%d is lesser than 50\n", num)
fallthrough
case num < 100:
fmt.Printf("%d is lesser than 100\n", num)
fallthrough
case num < 200:
fmt.Printf("%d is lesser than 200", num)
}
}

2. 循环

2.1. 语法

1
2
for initialisation; condition; post {   // 三者都可以省略
}
  1. 循环初始化,初始化语句只执行一次
  2. 之后检查循环条件,如果条件的计算结果为 true ,则 {} 内的循环体将执行
  3. post 语句将在每次成功循环迭代后执行,在执行 post 语句后,条件将被再次检查。如果为 true, 则循环将继续执行,否则循环终止

2.2. 注

  • for{ } 将无限循环
  • break,跳出循环
  • continue,跳出循环中当前循环