流程控制
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 }
运行结果:
有疑问加站长微信联系(非本文作者)