流程控制(if/else,for/range)
if
if条件判断语句的语法概括起来就是:如果满足条件就做某事,否则做另一件事。
func testIf() { num := 10 if num < 10 { fmt.Println(`less than 10`) } else if num == 10 { fmt.Println(`equal 10`) } else { fmt.Println(`more than 10`) }}
switch
switch语句用来解决很多if else的问题,语法如下
switch sExpr { case expr1: some instructions case expr2: some other instructions case expr3: some other instructions default: other code}
sExpr和expr1、expr2、expr3的类型必须一致。sExpr表达式不必是常量或整数,执行的过程从上至下,直到找到匹配项;而如果switch没有表达式,它会匹配true。witch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case。
func testSwitch() { i := 12 switch { case i < 12: fmt.Println("< 12") case i == 12: fmt.Println("= 12") default: fmt.Println("> 12") }}
for
循环操作,既可以用来循环读取数据,又可以当作while来控制逻辑,还能迭代操作。它的语法如下:
for expression1; expression2; expression3 { //...}expression1在循环开始之前调用,expression2是用来条件判断,expression3在每轮循环结束之时调用。
示例:
func testFor() { sum := 0 for num := 1; num < 10; num++ { sum += num } fmt.Println(sum)}
循环控制语句
循环控制语句可以控制循环体内语句的执行过程。
- break 语句 经常用于中断当前 for 循环或跳出 switch 语句
- continue 语句 跳过当前循环的剩余语句,然后继续进行下一轮循环。
for i := 1; i < 10; i++ { if i == 5 { continue } if i == 8 { break } fmt.Println(i)}
range 关键字
range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对的 key 值
arrs := [5]int{1, 2, 3, 4, 5} for index, item := range arrs { fmt.Println(index, item) } slices := []string{"a", "b", "c"} for index, item := range slices { fmt.Println(index, item) } maps := map[string]int{"a": 1, "b": 2, "c": 3} for key, val := range maps { fmt.Println(key, val) }