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)
}
Go笔记(4)-流程控制的更多相关文章
- 《Node.js In Action》笔记之流程控制
转向Javascript后,开始学习了node.js,选择的第一本书是<Node.js in Action> 将近一个月时间,断断续续看完,选几个点做下笔记 1.实现串行化流程控制 var ...
- 【原】Java学习笔记005 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...
- Python学习笔记 - day4 - 流程控制
Python流程控制 Python中的流程控制主要包含两部分:条件判断和循环. Python的缩进和语法 为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java.c等 ...
- PL/SQL笔记(1)-流程控制,循环,异常,块
流程控制 1.If,then,else,elsif(不是elseif) ' then null; endif; 2.Case 简单case表达式: 搜索型Case表达式: 3.goto语句 begin ...
- C#学习笔记_04_流程控制
04_流程控制 程序的执行结构: 顺序结构 分支结构 循环结构 可以通过某些特定的控制语句来控制代码的执行结构 分支流程控制 if else 基本语法 可以只有if没有else,但是不能没有if只有e ...
- PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数
前言 在上一节的学习中.已经介绍了几种基本类型.包括字符串的定义,以及字符串中索引.切片.字符串拼接的使用方法.以及基本的整形数据运算.一些之前都没有了解过的运算符.比如 ** 乘方 //整数除法等. ...
- JavaSE学习笔记03流程控制
Java流程控制 1.顺序结构 java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句往下执行. 顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构. 2. 选择结构 ...
- 《疯狂Kotlin讲义》读书笔记4——流程控制
流程控制 与Java类似,Kotlin同样提供了两种基本的流程控制结构:分支结构和循环结构. Kotlin提供了 if 和 when 两种分支语句,其中 when 语句可以代替Java的switch语 ...
- 学习笔记-Java流程控制
学习来源: [狂神说Java]Java零基础学习视频通俗易懂_哔哩哔哩_bilibili Java流程控制 用户交互Scanner 获取用户的输入 基本语法 Scanner s = new Scann ...
- Java学习笔记五——流程控制
分支结构 Java提供了两种常见的分支控制结构:if语句和switch语句. if语句 if语句使用布尔值或布尔表达式(表达式结果为布尔值),if语句有3中形式: 第一种形式: if (5 > ...
随机推荐
- 《深入理解Java虚拟机》读书笔记: 类加载器
类加载器 虚拟机设计团队把类加载阶段中的"通过一个类的全限定名来获取描述 ...
- plt.rcParams运行时修改全局配置参数
plt.rcParams简单介绍 plt.rcParams即 "运行时配置参数"("runtime configuration parameters"),是运行 ...
- 《Linux基础》04. 用户管理 · 用户组 · 相关文件 · 权限管理
@ 目录 1:用户管理指令 1.1:添加用户 1.2:修改用户密码 1.3:用户切换与注销 1.4:删除用户 1.5:查询用户信息 1.6:查看当前登录用户 1.7:查看有哪些用户 2:用户组指令 2 ...
- Python 导入 Excel多sheet
Python 导入 Excel多sheet 假设表格的样式如下 import os import sys import django BASE_DIR = os.path.dirname(os.pat ...
- 给你的 SpringBoot 工程部署的 jar 包瘦瘦身吧!
之前有写过一篇有关maven插件的文章:spring-boot-maven-plugin插件详解 一.需求背景 我们知道Spring Boot项目,是可以通过java -jar 包名 启动的. 那为什 ...
- SQL Server关于AlwaysOn的理解-读写分离的误区(一)
前言 很多人认为AlwaysOn在同步提交模式下数据是实时同步的,也就是说在主副本写入数据后可以在辅助副本立即查询到.因此期望实现一个彻底的读写分离策略,即所有的写语句在主副本上,所有的只读语句分离到 ...
- 「tricks」平凡二分幻术
其实这个的标题叫 平凡线段树上二分幻术,因为这是一个民科在乱叫. 如标题所言,这个东西确实非常 trivial.碍于网络上没有一个成体系的文章供参考就只能自己来炒炒冷饭. 如果出了什么 bug 就当个 ...
- 数据库sql中处理时间冲突问题
数据库现有数据其中两列: s - 开始时间, e - 结束时间. 在新插入数据s', e'之前需要判断两个时间之间是否有重合 因为使用mybatis-plus的缘故, 结论都使用s或e在符号前面. 1 ...
- package.json指南
一.属性 name 定义项目的名称,不能以"."和"_"开头,不能包含大写字母 version 定义项目的版本号,格式为:大版本号.次版本号.修订号 descr ...
- MySQL到TiDB:Hive Metastore横向扩展之路
作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方 ...