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 > ...
随机推荐
- WPF实现跳动的字符效果
本文将介绍一个好玩但实际作用可能不太大的动画效果:跳动的字符.为了提高动画效果的可重用性以及调用的灵活性,通过Behavior实现跳动的字符动画.先看下效果: 技术要点与实现 通过TextEffect ...
- Mybatis-Plus+Nacos+Dubbo进行远程RPC调用保姆级教程
默认你已经看过我之前的教程了,并且拥有上个教程完成的项目, 之前的教程 https://www.cnblogs.com/leafstar/p/17638782.html 1.在bank1的pom文件中 ...
- SpringBoot 笔记
SpringBoot 笔记 一.Spring Boot 入门 1.Spring Boot 简介 2.微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服 ...
- 《Kali渗透基础》10. 提权、后渗透
@ 目录 1:提权 2:Admin 提权为 System 2.1:at 2.2:sc 2.3:SysInternal Suite 2.4:进程注入提权 3:抓包嗅探 4:键盘记录 5:本地缓存密码 5 ...
- 如何在Vue3中配置国际化语言i18n
1. 安装 vue-i18n npm i vue-i18n -S 2. 创建一个i8n的配置文件 如:i18nConfig.js // 配置 vue-i18n 实现国际化语言设置 import { c ...
- 「atcoder - 214G」Three Permutations
la traduction. link. 如果我们对于每一个 \(k\in[0,n]\) 找到所有满足存在 \(k\) 个 \(i\) 使得 \(r_i=p_i\) 或 \(r_i=q_i\) 条件的 ...
- Solution Set -「CF 1534」
这 1+2? 「CF1534 A」Colour the Flag Link. 把 W / R 拉出来广搜,注意判断全空的情况. #include <bits/stdc++.h> using ...
- NebulaGraph实战:3-信息抽取构建知识图谱
自动信息抽取发展了几十年,虽然模型很多,但是泛化能力很难用满意来形容,直到LLM的诞生.虽然最终信息抽取质量部分还是需要专家审核,但是已经极大的提高了信息抽取的效率.因为传统方法需要大量时间来完成 ...
- strimzi实战之三:prometheus+grafana监控(按官方文档搞不定监控?不妨看看本文,已经踩过坑了)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 由于整个系列的实战都涉及到消息生产和消费,所 ...
- Linux平台Oracle 23c单实例 安装部署配置 快速参考
转眼间已经2023年,再有一周就要过年了,在这里先给大家拜个早年,祝大家新的一年万事顺利. Oracle如今版本号也和年份挂钩,在前段时间的OCW上也宣布发布了beta版本的23c,因为23c是继19 ...