流程控制
1. 条件
1.1 if else
1.1.1语法:
a. []中的内容为可选,if 条件判断中可以声明变量 :=
b. {}是必须的, condition 不需要用()括起来, {必须与else/if在同一行代码中
c. 在有返回值函数中,不允许把“最终的” return 语句放到if else 结构中,否则编译出错
1.2 switch
就是多个if...else
switch后面的表达式可以省略
注:
a.
go语言中只支持 for,无while
格式:
a. 表达式1,3支持多重赋值,如i, j [:]= 1, 2
b. 三个表达式均可以省略,注意死循环
c. 也有break, continue分别为跳出循环和跳出本次循环, break还可以跳转到标签
goto可以跳转到指定标签位置
运行结果:
- 条件: if else else if switch
- 循环: for
- 跳转: goto
- 关键字: break continue fallthrough range
1. 条件
1.1 if else
1.1.1语法:
if [声明变量;] condition1 {
//...
[} else if condition2 {]
//...
[} else {]
//...
}
1.1.2 注意:
a. []中的内容为可选,if 条件判断中可以声明变量 :=
b. {}是必须的, condition 不需要用()括起来, {必须与else/if在同一行代码中
c. 在有返回值函数中,不允许把“最终的” return 语句放到if else 结构中,否则编译出错
1.2 switch
就是多个if...else
switch后面的表达式可以省略
注:
a.
case 3:
case 4:
//可以直接写为:
case 3, 4:
b. 自带break
c. 如果需要匹配成功后,还要继续向下执行,可以用关键字 fallthrough
go语言中只支持 for,无while
格式:
for 表达式1; 表达式2; 表达式3 {
//语句
}
注:
a. 表达式1,3支持多重赋值,如i, j [:]= 1, 2
b. 三个表达式均可以省略,注意死循环
c. 也有break, continue分别为跳出循环和跳出本次循环, break还可以跳转到标签
d. for 与 range 配合使用,可遍历slice, array, string等
goto可以跳转到指定标签位置
标签1:
标签2:
goto 标签1
注:
标签也有作用域,并且区分大小写
note_flow_control.go code list
package main
import "fmt"
func main() {
//if...else...
if a, b := 2, 3; a == 2 {
fmt.Println("a, b = ", a, b)
goto Two
} else {
goto One
}
One:
fmt.Println("goto one")
fmt.Println("go 1 ?")
Two:
fmt.Println("goto two")
fmt.Println("go 2?")
/********************/
/*运行结果: */
/*a, b = 2 3 */
/*goto two */
/*go 2? */
/********************/
//switch
num := 2
switch num {
case 1:
fmt.Println("No.1")
case 2:
fmt.Println("No.2")
case 3:
fmt.Println("No.3")
fallthrough
case 4:
fmt.Println("No.4")
default:
fmt.Println("No.-1")
}
/*********************/
/*运行结果: */
/*No.2 */
/*如果num=3 */
/*No.3 */
/*No.4 */
/*********************/
//for
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Println("1+2+...+100 = ", sum) //1+2+...+100 = 5050
sum2, j := 0, 1
for ; j <= 100; j++ {
sum2 += j
}
fmt.Println("1+2+...+100 = ", sum2) //1+2+...+100 = 5050
sum3, k := 0, 1
for k <= 100 {
sum3 += k
k++
}
fmt.Println("1+2+...+100 = ", sum3) //1+2+...+100 = 5050
sum4, k := 0, 1
for {
sum4 += k
k++
if k > 100 {
break
}
}
fmt.Println("1+2+...+100 = ", sum4) //1+2+...+100 = 5050
}
运行结果: