【GO语言卵细胞级别教程】03.条件与循环语句

注意:以下演示所用的项目,在第一章节已经介绍了,这里不做赘述

目录:

  • 【GO语言卵细胞级别教程】03.条件与循环语句
  • 1.条件语句
    • 1.1 if语句
      • 1.1.1 单层if语句
      • 1.1.2 if-else语句
      • 1.1.3 if-else-if 语句
      • 1.1.4 if 嵌套
    • 1.2 switch 语句
      • 1.1.1 switch-case
      • 1.1.2 总结
    • 1.3 常见错误
  • 2.循环语句
    • 2.1 循环语句for
    • 2.2 For循环功能
    • 2.3 for range遍历函数
  • 3.关键词
    • 3.1 关键词break
    • 3.2 continue关键字
    • 3.3 goto关键字
    • 3.4 return关键词
  • 4.题目
    • 4.1 99乘法表

【GO语言卵细胞级别教程】03.条件与循环语句

1.条件语句

1.1 if语句

1.1.1 单层if语句

  1. 语法
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
}
  1. 案例
package tiaojian// if单层
import "fmt"func OneIf(){var num intfmt.Print("请输入一个数字:")fmt.Scan(&num)if num == 100{fmt.Println("满分100!")}fmt.Println("程序执行完!")}
// 输出结果
开始运行:
当前机器状态: 正常
请输入一个数字:100
满分100!
程序执行完!

1.1.2 if-else语句

  1. 语法
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else {/* 在布尔表达式为 false 时执行 */
}
  1. 案例
package tiaojian
// if-else 语句
import "fmt"func IfElse(){var num intfmt.Println("请输入一个数字:")fmt.Scan(&num)if num > 2023 {fmt.Println("恭喜您!2024新年好")}else{fmt.Println("2023辞旧迎新!")}
}

1.1.3 if-else-if 语句

  1. 语法
if 布尔表达式1 {}else if 布尔表达式{}
  1. 实战
package tiaojian
// if-else 语句
import "fmt"func IfElse(){var num intfmt.Println("请输入一个数字:")fmt.Scan(&num)if num > 2023 {fmt.Println("恭喜您!2024新年好")}else if num == 2024{fmt.Println("2023辞旧迎新!")}else {fmt.Println("读懂《遥远的救世主》:不去讨好生活,生活有时候会反")}
}

1.1.4 if 嵌套

  1. 语法: 用户输入值有两个方法
    (1)使用fmt.Scanf(“%d”, &age)
    (2)使用fmt.Scan(&age)
if 布尔表达式1 {/* 在布尔表达式 1 为 true 时执行 */if 布尔表达式2 {/* 在布尔表达式 2 为 true 时执行 */}
}
  1. 实战
package tiaojian
// if-else 语句
import "fmt"func IfElse(){var num intfmt.Println("请输入一个数字:")fmt.Scan(&num)if num > 2023 {fmt.Println("恭喜您!2024新年好")}else if num == 2024{fmt.Println("2023辞旧迎新!")}else {if num == 1{fmt.Println("袈裟本无清静,红尘不染性空,幽幽古刹千年钟,都是痴人说梦")}fmt.Println("读懂《遥远的救世主》:不去讨好生活,生活有时候会反")}
}
// 运行结果
开始运行:
当前机器状态: 正常
请输入一个数字:1
程序执行完!
请输入一个数字:
1
袈裟本无清静,红尘不染性空,幽幽古刹千年钟,都是痴人说梦
读懂《遥远的救世主》:不去讨好生活,生活有时候会反
  1. 实战
package tiaojian// 条件语句import "fmt"func Tiaojian(){var a1 int = 1var a2 int = 2fmt.Printf("a1=%v, a2=%v\n", a1, a2)if a1 < a2 {fmt.Println("a1 < a2")}else{fmt.Println("a1 > a2")	}// 使用scanf 输入一个值var pwd string = ""fmt.Print("请输入密码:")fmt.Scanf("%v", &pwd)fmt.Println(a1)if pwd == "001"{fmt.Println("密码输入正确!!")fmt.Println("获取新的技能:重锤火花")fmt.Println("经验提升:88")fmt.Println("获取金钱:88888888")}else{fmt.Println("密码输入错误!!")fmt.Println("金钱扣除:80")}// 使用fmt.Print("请再输入一个:")fmt.Scan(&a1)fmt.Println(a1)
}
// 执行结果
运行结果:
当前状态: 19
a1=1, a2=2
a1 < a2
请输入密码:001
1
密码输入正确!!
获取新的技能:重锤火花
经验提升:88
获取金钱:88888888
请再输入一个:20
20

1.2 switch 语句

  1. switch 后是一个表达式(变量、常量、一个有返回值的函数等都可以)
  2. case后面的表达式如果是常量值(字面量)则要求不能重复
  3. case后面的各个值得数据类型必须和switch一致
  4. case后面可以多个值使用逗号分割,比如case 值1,值2……
  5. case后面不需要带break go语言不需要,想要无条件执行下一句需要使用fallthrough
  6. default 语句不是必须的,位置也是可以在任何地方
  7. switch后也可以不带表达式,当作if分支来使用
  8. switch后也可以直接声明/定义一个变量,分号结束,需要使用num:=xxx得方式声明;
  9. switch 穿透利用fallthrough 关键字,如果在case 语句块后增加fallthrough,则会继续执行下一个case

1.1.1 switch-case

  1. 语法
    其中表达式可以是:一个常量值、变量或者有返回值的函数都可以
switch 表达式 {case1,2:语句1case1,2:语句2case1,2:语句3default:语句4
}
  1. 实战:switch后面直接大括号
package tiaojian
// switch 语句
import "fmt"func DemoSwitch(){var num intfmt.Print("请输入一个num:")fmt.Scan(&num)switch {case num >= 0 && num < 60:fmt.Println("还得继续加油!:", num)fallthroughcase num >= 60 && num < 70:fmt.Println("恭喜您,及格了!:", num)case num >= 70 && num < 80:fmt.Println("恭喜您,良好了!:", num)case num >= 80 && num < 90:fmt.Println("恭喜您,优秀了!:", num)default:fmt.Println("满分?", num)}
}
// 输出结果
开始运行:
当前机器状态: 正常
请输入一个num:12
还得继续加油!: 12
恭喜您,及格了!: 12

注意,其中fallthrough 表示无条件执行下一个case,也就是无论下一条语句执行的是true还是false都会执行。
2. 实战:switch 后面跟变量

package tiaiojian
import "fmt"
func SwitchVar{var num int fmt.Scan(&num)switch num{case 60:fmt.Println("及格了", num)case 80:fmt.Println("良好了", num)default:fmt.Println("还能满分么!", num)}
}// 直接固定一个值也是也可以,直接固定60比如
package tiaojianimport "fmt"func SwitchVar(){var num intfmt.Scan(&num)switch 60{case 60:fmt.Println("恭喜您,及格了!")case 80:fmt.Println("恭喜您,良好了!")default:fmt.Println("恭喜您,满分了?")}
}
  1. 实战:switch 后是一个表达式(变量、常量、一个有返回值的函数等都可以)
package tiaojianimport "fmt"func SwitchVar(){var num intfmt.Scan(&num)fmt.Println("测试固定得值")switch 60{case 60:fmt.Println("固定的值60")default:fmt.Println("没有值")}const STATUS int = 100switch STATUS{case 100:fmt.Println("满分100!")default:fmt.Println("没有值")}
}
// 结果
测试固定得值
固定的值60// 定义一个带有返回值的函数
package tiaojianimport "fmt"func returnInt() int {return 70
}func SwitchVar(){var num intfmt.Scan(&num)switch returnInt(){case 70:fmt.Println("函数返回值70")default:fmt.Println("没有值")}
}
  1. 实战: case后面的表达式如果是常量值(字面量)则要求不能重复
    在这里插入图片描述

  2. 实战: case后面的表达式如果是常量值(字面量)则要求不能重复
    在这里插入图片描述

  3. 实战:case后面可以多个值使用逗号分割,比如case 值1,值2……

switch 70 {case 60, 70, 8:fmt.Println("固定的值60")default:fmt.Println("没有值")}
  1. 实战:switch后也可以不带表达式,当作if分支来使用
switch {case num ==1:fmt.Println("这是可以当作if语句使用")
}
  1. 实战:switch后也可以直接声明/定义一个变量,分号结束,需要使用num:=xxx得方式声明;
switch test :=12; {case test == 12:fmt.Println("这是一个变量值等于12")case test > 12:fmt.Println("这个变量大于12")
}

1.1.2 总结

  1. switch {} 括号里需要是布尔类型
  2. switch test {}case后面需要是常量
  3. 无条件执行下一步使用fallthrough即可
package tiaojianimport "fmt"func SwitchVar(){fmt.Println("------总结------")var num1 int =12// switch后面不跟值switch {case num1 == 12:fmt.Println("这是12")case num1 == 13:fmt.Println("这是13")default:fmt.Println("这是default")}// switch后面跟变量switch num1{case 12:fmt.Println("这是12")case 13:fmt.Println("这是13")default:fmt.Println("这是default")}// switch后面跟声明变量 相当于 var num2 int 13; switch {}switch num2:=13; {case num1 == 12:fmt.Println("这是12")case num2 == 12:fmt.Println("这是13")default:fmt.Println("这是default")}
}

1.3 常见错误

  1. else必须要和中括号的反括号在一行
    在这里插入图片描述

2.循环语句

2.1 循环语句for

  1. 解决的问题
    如果有重复的值不断累加计算的话,比如 从1+100 那么我要么写100个变量,相加。所以对这种循环可以使用for解决
var a1 int 1
var a2 int 2 
……
var a100 int 100
var sum int = a1+a2+……+a100
  1. for语法
    for 循环是一个循环控制结构,可以执行指定次数的循环。
// Like a C for
for init; condition; post { }// Like a C while
for condition { }// Like a C for(;;)
for { }
---------
翻译成中文就是
for 初始化语句;循环条件;后置语句{}
  1. 实战测试
package tiaojian
// for循环语句
import "fmt"func DemoFor(){for i:=0; i < 10 ;i++{fmt.Println(i)}
}
输出结果:0 1 2 3 4 5 6 7 8 9
或者package tiaojian
// for循环语句
import "fmt"func DemoFor(){for i:=0; i < 10 ;i+=2{fmt.Println(i)}}
输出结果:0 2 4 6 8

2.2 For循环功能

  1. for 在Go语言中可以当作while使用,因为Go语言中没有while关键词
for {fmt.Println("无限循环")
}
或者
for ;;{xxx
}
  1. 实战测试
package tiaojian
// for循环语句
import ("fmt""time"
)func DemoFor(){var count int = 0for i:=0; i < 10 ;i+=2{fmt.Println(i)}// 无限循环方法1fmt.Println("无限循环方法!")for {time.Sleep(1 * time.Second)fmt.Println("无限循环!1")count ++if count >=3 {break}}// 无限循环方法2for ;; {time.Sleep(1 * time.Second)fmt.Println("无限循环!2")}
}

2.3 for range遍历函数

  1. 简介
    range关键字用于迭代数组(Array)、切片(Slice)、字符串(String)、映射(Map)、通道(Channel)等数据结构。它提供了一种简洁的方式来遍历这些数据结构的元素。如果不使用range for就是按照那个字节输出,如果遇到中文就会有问题,因为中英文字节不一样。所以会乱码,使用range就是可以遍历完成的。
    可以直接理解为
    range xxx 返回值是一个下标和值
    index,value = range xxx
  2. 实战
package tiaojianimport "fmt"func DemoForRange(){var str string = "hello golang 你好"// 这里是按照字节遍历输出的for i :=0; i < len(str) ; i++{fmt.Printf("%c\n", str[i])}// 使用range函数for index, value := range str{fmt.Printf("index:%v, value=%c\n ", index, value)}
}
//输出结果
h
e
l
l
og
o
l
a
n
gä
½å
¥
½
index:0, value=hindex:1, value=eindex:2, value=lindex:3, value=lindex:4, value=oindex:5, value=index:6, value=gindex:7, value=oindex:8, value=lindex:9, value=aindex:10, value=nindex:11, value=gindex:12, value=index:13, value=你index:16, value=

3.关键词

3.1 关键词break

  1. 简介
    break的作用就是跳过循环
  2. 实战:实现一个累加,大于等于100就跳出循环
package tiaojianimport "fmt"func DemoBreak(){sum := 0for i :=0; i < 100; i++{sum += i if sum >= 100{fmt.Println("i=", i, "sum=", sum)break}else{fmt.Println("sum=", sum)}}
}

3.2 continue关键字

  1. 简介跳出本次循环,不影响下一次循环
  2. 实战
package tiaojian
// continue作用
import "fmt"func DemoContinue(){for i:=0; i < 5; i ++{if i == 3 {fmt.Println("跳出本次循环:", i)continue}fmt.Println("i=",i)}
}
// 输出结果
开始运行:
当前机器状态: 正常
i= 0
i= 1
i= 2
跳出本次循环: 3
i= 4

3.3 goto关键字

  1. 可以转到程序中的指定的行
  2. 通常与条件语句搭配使用,可以来实现条件转移
  3. 在Go或者c语言程序设计中一般其实是不建议使用goto语句,以免造成程序流程的混乱,曾经在C中出现过goto危机
package tiaojian// goto语句import "fmt"func DemoGoto(){fmt.Println("goto01")goto title1fmt.Println("goto02")fmt.Println("goto03")title1:fmt.Println("goto04")fmt.Println("goto05")fmt.Println("goto06")
}

3.4 return关键词

  1. 用于提前结束函数
func divide(a, b float64) (float64, error) {if b == 0 {return 0, fmt.Errorf("division by zero")}return a / b, nil
}
  1. 返回结果,可以将函数的返回值给调用者
func add(a, b int) int {return a + b
}

4.题目

4.1 99乘法表

  1. 实现99乘法表
package tiaojian
// 99乘法表
import "fmt"func Demo99(){for i := 1; i <=9; i++{for j:=1; j <=i; j++{fmt.Printf("%dx%d=%d ", j, i, i*j)if i == j{println()				}}}
}// 输出结果
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2777450.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

问题:老年人心理健康维护与促进的原则为________、________、发展原则。 #媒体#知识分享

问题&#xff1a;老年人心理健康维护与促进的原则为________、________、发展原则。 参考答案如图所示

Java强训day17(选择题编程题)

选择题 编程题 题目1 import java.util.Scanner;public class Main { public static void main(String[] args) {Scanner sc new Scanner(System.in);char[] c1 sc.nextLine().toCharArray();char[] c2 sc.next().toCharArray();//取c2[0]if(c2[0]>A && c2[…

从一到无穷大 #23 《流计算系统图解》书评

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言内容总结 引言 春节假期回到家里断然是不会有看纸质书的时间的。造化弄人&#…

微服务OAuth 2.1扩展额外信息到JWT并解析(Spring Security 6)

文章目录 一、简介二、重写UserDetailsService三、Controller解析JWT获取用户信息四、后记 一、简介 VersionJava17SpringCloud2023.0.0SpringBoot3.2.1Spring Authorization Server1.2.1Spring Security6.2.1mysql8.2.0 Spring Authorization Server 使用JWT时&#xff0c;前…

jmeter-问题二:JMeter进行文件上传时,常用的几种MIME类型

以下是一些常用的MIME类型及其对应的文件扩展名&#xff1a; 文本类型: text/plain: 通常用于纯文本文件&#xff0c;如 .txt 文件。 text/html: 用于HTML文档&#xff0c;即 .html 文件。 application/msword: Microsoft Word文档&#xff0c;即 .doc 和 .docx 文件。 图像…

SparkJDBC读写数据库实战

默认的操作 代码val df = spark.read.format("jdbc").option("url", "jdbc:postgresql://localhost:5432/testdb").option("user", "username").option("password", "password").option("driver&q…

《剑指 Offer》专项突破版 - 面试题 37 : 小行星碰撞(C++ 实现)

题目链接&#xff1a;LCR 037. 行星碰撞 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 输入一个表示小行星的数组&#xff0c;数组中每个数字的绝对值表示小行星的大小&#xff0c;数字的正负号表示小行星运动的方向&#xff0c;正号表示向右飞行&#xff0c;负…

【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、分布…

自动化UI,API和DevOps测试架构设计与实现

自动化测试是软件开发过程中的重要环节&#xff0c;它可以提高测试效率、减少人工测试的工作量。本文将介绍自动化测试架构的设计原则和实现方法&#xff0c;以帮助读者理解如何构建一个可靠、可扩展和易于维护的自动化测试框架。 1. 什么是自动化测试&#xff1f; - 解释了…

【java】简单的Java语言控制台程序

一、用于文本文件处理的Java语言控制台程序示例 以下是一份简单的Java语言控制台程序示例&#xff0c;用于文本文件的处理。本例中我们将会创建一个程序&#xff0c;它会读取一个文本文件&#xff0c;显示其内容&#xff0c;并且对内容进行计数&#xff0c;然后将结果输出到控…

excel统计分析——多组数据的秩和检验

单因素资料不完全满足方差的基本假定时&#xff0c;可进行数据转换后再进行方差分析&#xff0c;但有时数据转换后仍不满足方差分析的基本假定&#xff0c;就只能进行秩和检验了。 多组数据秩和检验的主要方法为Kruskal-Wallis检验&#xff0c;也称为Kruskal-Wallis秩和方差分析…

1、学习 Eureka 注册中心

学习 Eureka 注册中心 一、创建 Eureka 微服务0、SpringBoot 和 SpringCloud 版本1、引入 Eureka 服务端依赖2、启动类加 EnableEurekaServer 注解3、配置 yaml 文件&#xff0c;把 Eureka 服务注册到 Eureka 注册中心4、访问 Eureka 服务端&#xff0c;查看注册中心的服务列表…

2024年N1叉车司机证模拟考试题库及N1叉车司机理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年N1叉车司机证模拟考试题库及N1叉车司机理论考试试题是由安全生产模拟考试一点通提供&#xff0c;N1叉车司机证模拟考试题库是根据N1叉车司机最新版教材&#xff0c;N1叉车司机大纲整理而成&#xff08;含2024年…

前端JavaScript篇之call() 和 apply() 的区别?

目录 call() 和 apply() 的区别&#xff1f; call() 和 apply() 的区别&#xff1f; 在JavaScript中&#xff0c;call()和apply()都是用来改变函数中this指向的方法&#xff0c;它们的作用是一样的&#xff0c;只是传参的方式不同。 call()方法和apply()方法的第一个参数都是…

NOR Flash 存内计算芯片技术探幽

文章目录 NOR Flash 存内计算芯片技术探幽1. 核心技术与芯片架构的独特设计2. 强大性能与多样化应用场景3. 技术前景与面临挑战4. 模拟计算精度的突破5. 工具链完善与应用生态建设6. 跨层协同设计的推动7. 技术突破与挑战8. 工具链的完善与生态系统建设9. 跨层协同设计的加强10…

(全网最全)微型计算机原理与接口技术第六版课后习题答案-周荷琴,冯焕清-第10章模数(A/D)和数模(D/A)转换-中国科学技术大学出版社

含有“AI:”开头的题目的答案是问chat的&#xff0c;看个乐就行&#xff0c;不一定正确 大年初一&#xff0c;赶着把最后两篇文章发完&#xff0c;嘻嘻 1。包含A/D和D/A的实时控制系统主要由哪几部分组成&#xff1f;什么情况下要用多路 开关? 第二段文字是在旧版第四版答案…

idea自带database连接mysql失败问题

idea2023.1版连接mysql失败 DBMS: MySQL (ver. 5.7.13) Case sensitivity: plainexact, delimitedexact Driver: MySQL Connector Java (ver. mysql-connector-java-5.1.47 ( Revision: fe1903b1ecb4a96a917f7ed3190d80c049b1de29 ), JDBC4.0) [08S01]Communications link fai…

Stata实证命令代码汇总

Stata代码命令汇总 数据内容&#xff1a;包括数据导入和管理、数据的处理、描述性统计、相关性分析、实证模型、内生性解决、检验分析、结果导出 具体如下&#xff1a; 一、数据导入和管理&#xff1a;数据导入、数据导出 二、数据的处理&#xff1a;生成新变量、格式转换、…

安卓服务的常见问题,性能优化以及应用场景剖析

一、引言 在安卓开发中&#xff0c;服务&#xff08;Service&#xff09;扮演着至关重要的角色&#xff0c;它们在没有用户界面的情况下&#xff0c;为用户提供了长时间的后台任务执行能力。本文将探讨服务常见问题、优化策略、应用场景以及开发过程中应注意的事项。 二、应用场…

c#安全-nativeAOT

文章目录 前记AOT测试反序列化Emit 前记 JIT\AOT JIT编译器&#xff08;Just-in-Time Complier&#xff09;,AOT编译器&#xff08;Ahead-of-Time Complier&#xff09;。 AOT测试 首先编译一段普通代码 using System; using System.Runtime.InteropServices; namespace co…