Go笔记(4)-流程控制

5.Go语言流程控制

程序流程的控制结构一般有三种,顺序结构,选择结构,循环结构

(1)选择结构

if语句

  • if流程控制与其他语言的if流程控制基本相同
package main

import "fmt"

/*
1、定义一个整数
2、通过if语句进行比较
*/
func main() {
	//1、定义一个整数
	a := 15

	//2、通过if语句进行比较
	if a > 20 {
		fmt.Println("a>20")
	}

	if a > 10 {
		fmt.Println("a>10")
	}
}


if-else

package main

import "fmt"

/*
1、定义一个分数score
2、通过if else语句判断  >=90合格  90<=不合格
*/
func main() {
	//1、定义一个分数score
	var score int = 90

	//2、通过if else语句判断  >=90合格  90<=不合格
	if score >= 90 {
		fmt.Println("你的成绩合格")
	} else {
		fmt.Println("你的成绩不合格")
	}

}


if嵌套

  • go语言中没有java的if-else if -else 语句,但是if语句可以嵌套
package main

import "fmt"

/*
通过键盘输入两次密码进行校验
1、定义三个变量 x,y,password
2、x,y为键盘输入的值
3、通过if嵌套语句进行验证
*/
func main() {
	//1、定义三个变量 x,y,password
	var x, y, pwd int
	pwd = 20230107
	fmt.Println("请输入您的密码:")
    //2、x,y为键盘输入的值
	fmt.Scanln(&x)
	if pwd == x {
		fmt.Println("请再次输入您的密码确认")
		fmt.Scanln(&y)
		//3、通过if嵌套语句进行验证
		if pwd == y {
			fmt.Println("登录成功")
		} else {
			fmt.Println("密码验证失败")
		}
	} else {
		fmt.Println("密码验证失败")

	}
}

Switch语句

  • Switch语句的每一个case分支都是唯一的,从上往下执行直到找到匹配项
  • 在go语言中,匹配项之后不需要+break,go语言默认在case的最后自带break语句
package main

import "fmt"


func main() {
	//1、定义一个变量score 成绩为66
	var score int = 60
	
	//2、通过 Switch语句进行判断  90==A	80==B	70-50==C
	switch score {
	case 90:
		fmt.Println("A")
	case 80:
		fmt.Println("B")
	case 70, 50, 60:
		fmt.Println("C")

	//3、当所有条件不满足执行default语句
	default:
		fmt.Println("D")
	}

}
  • 在go语言中,case的匹配项可以是表达式
package main

import "fmt"

func main() {
	//1、定义一个成绩score 
	var score int
	//2、通过键盘输入成绩
	fmt.Println("请输入一个数:")
	fmt.Scanln(&score)
	//3、通过Switch条件判断
	switch {
	case score >= 90:
		fmt.Println("您的成绩为A")
	case score >= 80 && score < 90:
		fmt.Println("您的成绩为B")
	case score >= 60 && score > 0:
		fmt.Println("您的成绩为C")
	case score < 60 && score > 0:
		fmt.Println("您的成绩不合格")
	default:
		fmt.Println("查询不到您的成绩") //因为成绩不能为负数
	}
}
fallthrough贯穿switch语句
  • switch默认情况下匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用fallthrough穿透case。使用fallthrough 会强制执行后面的case语句,fallthrough 不会判断下一条case的表达式结果是否为true。
package main

import "fmt"

func main() {
   var a bool = false
   switch a {
   case false:
      fmt.Println("1,case条件为false")
      fallthrough                      //进行穿透,依然会执行下一个case
   case true:
      fmt.Println("2,case条件为true")
   }
}

  • 有时候暴力穿透会影响程序,因此可以用break进行终止
package main

import "fmt"

func main() {
   var a bool = false
   switch a {
   case false:
      fmt.Println("1,case条件为false")
      fallthrough             //进行穿透
   case true:
      if a == false {
         break //终止穿透
      }
      fmt.Println("2,case条件为true")
   case false:
       fmt.Println("false")           //不会执行这里
   }
    
}

(2)循环结构

for循环

  • 同其他语言的for语句相同用法
  • 可以使用break结束当前整个循环
  • 可以使用continue结束当次循环
package main

import "fmt"

/*
for 条件的起始值;循环条件;控制变量自增或者自减
*/
func main() {

	sum := 0     //计数
	for i := 0; i <= 10; i++ {
		sum += i
	}
	fmt.Println(sum)
}


posted @ 2023-10-23 11:07  silly_fox  阅读(10)  评论(0编辑  收藏  举报