首页 > 其他分享 >狂神说Go语言笔记—Go流程控制

狂神说Go语言笔记—Go流程控制

时间:2022-11-12 16:14:01浏览次数:36  
标签:case 语句 fmt 笔记 Println score Go 狂神 main

流程控制

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

顺序结构:从上到下,逐行执行。默认的逻辑
选择结构:条件满足某些代码才会执行

  • if
  • switch
  • select ,后面channel再讲

循环结构:条件满足某些代码会被反复执行0-N次.

  • for

if语句

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为true来决定是否执行指定语句,并在条件为false的情况在执行另外的语句

下图展示了程序条件语句的结构

image-20221112124207698

if条件语句

package main

import "fmt"

func main() {
   var a int = 15
   if a > 20 {
      fmt.Println("a>20")
   }
   if a > 10 {
      fmt.Println("a>10")
   }
    //输出结果:a>10
}

if else 语句

package main

import "fmt"

func main() {
    //定义一个分数为90
   var score int
   fmt.Println("请输入一个数:")
   fmt.Scan(&score)
   //设置score>=90 优秀
   //   score>=60 良好
   //   score <60 不及格
   if score >= 90 {
      fmt.Println("优秀")
   } else if score >= 60 {
      fmt.Println("良好")
   } else {
      fmt.Println("不及格")
   }
}

image-20221112130415789

if嵌套语句

package main

import "fmt"

// if嵌套
func main() {
	//	验证密码
	var x, y, pwd int
	pwd = 20221112
	fmt.Print("请输入密码:")
	fmt.Scanln(&x)

	if x == pwd {
		fmt.Print("请再次输出密码:")
		fmt.Scanln(&y)
		if y == pwd {
			fmt.Println("密码验证成功")
		}
	} else {
		fmt.Println("密码验证失败")
	}
}


image-20221112132207987

switch语句

switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止。

switch语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。switch 默认情况下case最后自带 break语句

示例一:

package main

import "fmt"

func main() {
   var score int = 66

   switch score {
   case 90:
      fmt.Println("A")
   case 80:
      fmt.Println("B")
   case 70, 60, 50:
      fmt.Println("C")
   // 当所有条件不满足时,执行default语句
   default:
      fmt.Println("D")
   }
//打印输出结果:D
}

这里也可以按照条件输入判断

示例二:

package main

import "fmt"

func main() {
   var score int

   fmt.Printf("请输入一个数:")
   fmt.Scan(&score)

   switch {
   case score >= 90:
      fmt.Println("您的成绩为优秀")
   case score >= 60 && score < 90:
      fmt.Println("您的成绩为良好")
   case score < 60 && score > 0:
      fmt.Println("您的成绩为不及格")
 //	当所有条件不满足时,执行default语句
   default:
      fmt.Println("查询不到您的成绩")
   }

}

image-20221112144912322

fallthrough 贯穿;直通

switch默认情况下匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用fallthrough穿透case使用fallthrough 会强制执行后面的case语句,fallthrough 不会判断下一条case的表达式结果是否为true。

当进行匹配选择机制后就不会执行后面的语句

image-20221112150042437

如果想要无视任何条件直接执行下一条的语句就可以使用fallthrough

package main

import "fmt"

func main() {
   var a bool = false
   switch a {
   case false:
      fmt.Println("1,case条件为false")
      fallthrough
   case true:
      fmt.Println("2,case条件为true")
   }
}

image-20221112150214925

暴力穿透很容易影响我们的程序,我们可以使用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")

   }
    //输出结果:1,case条件为false
}

for语句

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。

for循环是一个循环控制结构,可以执行指定次数的循环。

package main

import "fmt"

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

   // 无限循环
   //i := 1
   //for {
   // fmt.Println(i)
   // i++
   //}

   //计算1到10的数字和
   sum := 0
   for i := 1; i <= 10; i++ {
      sum += i

   }
   fmt.Println(sum)
}

练习一

package main

import "fmt"

/* 打印一个方阵
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
 */
func main() {
   for j := 0; j < 5; j++ {
      for i := 0; i < 5; i++ {
         fmt.Print("* ")
      }
      fmt.Println()
   }
}

练习二

package main

import "fmt"

func main() {
    //打印9列
   for j := 1; j <= 9; j++ {

      //打印9行 i <= j逐级递减
      for i := 1; i <= j; i++ {
         //Printf字符编排  一个%d对应一个值
         fmt.Printf("%d*%d=%d ", i, j, i*j)
      }
       //输出完每一行换行
      fmt.Println()
   }

}

break 结束当前整个循环

package main

import "fmt"

func main() {
   
   //break结束当前循环
   for i := 0; i < 9; i++ {
      if i == 5 {
         break
      }
      fmt.Println(i)
   }

   
}

continue 结束当次循环

package main

import "fmt"

func main() {
//continue 结束当次循环
   fmt.Println("=======================")
   for i := 0; i < 9; i++ {
      if i == 5 {
         continue
      }
      fmt.Println(i)
   }
}

标签:case,语句,fmt,笔记,Println,score,Go,狂神,main
From: https://www.cnblogs.com/DuPengBG/p/16883982.html

相关文章

  • go错误汇总2:[ERROR] listen tcp: address 8082: missing port in address
    go错误汇总2:[ERROR]listentcp:address8082:missingportinaddress错误信息:[ERROR]listentcp:address8082:missingportinaddress 错误原因:代......
  • Gin框架执行:go get -u github.com/gin-gonic/gin 报错
    Gin框架执行:goget-ugithub.com/gin-gonic/gin报错错误信息://无法导入gin包:go:modulegithub.com/gin-gonic/gin:Get"https://proxy.golang.org/github.com/gin-......
  • Unix/Linux系统编程第十三章学习笔记
    第十三章TCP/IP和网络13.2TCP协议TCP/IP(Comer1988,2001;RFC11801991)是互联网的基础。TCP代表传输控制协议。IP代表互联网协议。目前有两个版本的IP,即IPv4和IPv6。IPv4使......
  • PHP Server Monitor更改logo
    2、更改src目录下的body.tpl.html......
  • go集成nacos
    一.nacos介绍及安装1.官网https://nacos.io/zh-cn/docs/quick-start.html 二.集成go1.官网地址https://github.com/nacos-group/nacos-sdk-go2.使用 package......
  • 使用Argocd部署应用
    部署helloworld[root@master07-argocd-basics]#kubectlapply-f01-application-helloworld.yamlapplication.argoproj.io/spring-boot-helloworldcreated[root@ma......
  • 程序员的修炼之道:从小工到专家 读书笔记五
    第五章 弯曲或折断解耦与得墨忒(tei)耳法则1、把你的代码组织成最小单位(模块),并限制他们之间的交互。如果随后必须替换某个模块,其他模块仍能够继续工作。2、应使耦合减至......
  • Go进阶36:Goland远程开发调试
    Go进阶36:Goland远程开发调试Go&Rust......
  • Mongodb中的PSA转换为PSS架构
    PSA架构的问题众所周知,PSA架构中如果Secondary发生故障会带来一系列的问题,包括Majority写入无法完成造成主库内存压力的增加重启主库需要更多的时间特殊情况下会导致数据的......
  • Go 语言项目源码解析:定时任务库 cron
    环境准备首先我们将源码克隆(Fork)为自己的个人仓库,只需要在GitHub项目主页点击Fork按钮,然后输入项目名称点击确认即可。克隆完毕后,可以下载到本地,或者直接在科隆后的Git......