100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句

news/2024/10/18 6:00:25/

在这里插入图片描述

🌷 博主 libin9iOak带您 Go to Golang Language.✨
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🐥

100天精通Golang(基础入门篇)

  • 100天精通Golang(基础入门篇)——第8天:程序的流程结构和条件语句
    • 摘要:
    • 引言:
  • 一、程序的流程结构
  • 二、条件语句
    • 2.1 if 语句
    • 2.2 if 变体
    • 2.3 switch语句:“开关”
    • 2.4 fallthrough
    • 2.5 Type Switch
    • 今日学习总结:
  • 结语

100天精通Golang(基础入门篇)——第8天:程序的流程结构和条件语句

摘要:

本文是《100天精通Golang(基础入门篇)》系列的第8天,介绍了Golang中程序的流程结构和条件语句。通过学习程序的流程结构,包括顺序结构、分支结构和循环结构,以及条件语句如if语句和switch语句,读者可以进一步掌握Golang的基础知识和语法。

引言:

作为一门强大的编程语言,Golang提供了丰富的流程控制和条件判断的语法。在今天的学习中,我们将深入探讨程序的流程结构和条件语句,为编写更加灵活和可控的代码打下坚实的基础。

在程序的流程结构中,我们将学习顺序结构以及如何使用不同的控制结构来控制程序的执行流程。此外,我们还将重点介绍条件语句,包括if语句和switch语句,以及它们的变体。通过这些知识,您将能够根据不同的条件执行不同的代码块,使程序具备更强的逻辑和灵活性。

一、程序的流程结构

程序的流程结构是指程序的执行流程和代码的执行顺序。在Golang中,我们可以使用不同的控制结构来控制程序的流程,包括顺序结构、分支结构和循环结构。顺序结构是指代码按照从上到下的顺序执行,是最基本的程序流程结构。

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

顺序结构:从上向下,逐行执行。

选择结构:条件满足,某些代码才会执行。0-1次

​ 分支语句:if,switch,select

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

​ 循环语句:for

二、条件语句

条件语句用于根据不同的条件执行不同的代码块。在Golang中,常用的条件语句包括if语句和switch语句。

2.1 if 语句

if语句是最基本的条件语句,用于根据条件是否满足来执行相应的代码块。在if语句中,如果条件为true,则执行if后面的代码块;如果条件为false,则跳过if语句继续执行下面的代码。

语法格式:

if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
}
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else {/* 在布尔表达式为 false 时执行 */
}
if 布尔表达式1 {/* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{/* 在布尔表达式1为 false ,布尔表达式2为true时执行 */
} else{/* 在上面两个布尔表达式都为false时,执行*/
}

示例代码:

package mainimport "fmt"func main() {/* 定义局部变量 */var a int = 10/* 使用 if 语句判断布尔表达式 */if a < 20 {/* 如果条件为 true 则执行以下语句 */fmt.Printf("a 小于 20\n" )}fmt.Printf("a 的值为 : %d\n", a)
}

2.2 if 变体

除了基本的if语句,Golang还提供了一些if语句的变体,包括if-else语句和if-else if语句。通过这些变体,我们可以根据多个条件来执行不同的代码块。

如果其中包含一个可选的语句组件(在评估条件之前执行),则还有一个变体。它的语法是

if statement; condition {  
}if condition{}

示例代码:

package mainimport (  "fmt"
)func main() {  if num := 10; num % 2 == 0 { //checks if number is evenfmt.Println(num,"is even") }  else {fmt.Println(num,"is odd")}
}

需要注意的是,num的定义在if里,那么只能够在该if…else语句块中使用,否则编译器会报错的。

2.3 switch语句:“开关”

switch语句是一种根据表达式的值来选择执行哪个代码块的条件语句。它可以替代一系列if-else if语句,使代码更加简洁和可读。在switch语句中,我们使用case关键字来定义不同的情况,并在每个case后面跟随相应的代码块。

switch是一个条件语句,它计算表达式并将其与可能匹配的列表进行比较,并根据匹配执行代码块。它可以被认为是一种惯用的方式来写多个if else子句。

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加break。

而如果switch没有表达式,它会匹配true

Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行后面的case代码。

变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。

switch var1 {case val1:...case val2:...default:...
}

示例代码:

package mainimport "fmt"func main() {/* 定义局部变量 */var grade string = "B"var marks int = 90switch marks {case 90: grade = "A"case 80: grade = "B"case 50,60,70 : grade = "C"  //case 后可以由多个数值default: grade = "D"  }switch {case grade == "A" :fmt.Printf("优秀!\n" )     case grade == "B", grade == "C" :fmt.Printf("良好\n" )      case grade == "D" :fmt.Printf("及格\n" )      case grade == "F":fmt.Printf("不及格\n" )default:fmt.Printf("差\n" );}fmt.Printf("你的等级是 %s\n", grade );      
}

2.4 fallthrough

fallthrough是一个可选的关键字,用于在switch语句中执行下一个case的代码块,而不论下一个case的条件是否满足。

如需贯通后续的case,就添加fallthrough

package mainimport ("fmt"
)type data [2]intfunc main() {switch x := 5; x {default:fmt.Println(x)case 5:x += 10fmt.Println(x)fallthroughcase 6:x += 20fmt.Println(x)}}

运行结果:

15
35

case中的表达式是可选的,可以省略。如果该表达式被省略,则被认为是switch true,并且每个case表达式都被计算为true,并执行相应的代码块。

示例代码:

package mainimport (  "fmt"
)func main() {  num := 75switch { // expression is omittedcase num >= 0 && num <= 50:fmt.Println("num is greater than 0 and less than 50")case num >= 51 && num <= 100:fmt.Println("num is greater than 51 and less than 100")case num >= 101:fmt.Println("num is greater than 100")}}

switch的注意事项

  1. case后的常量值不能重复
  2. case后可以有多个常量值
  3. fallthrough应该是某个case的最后一行。如果它出现在中间的某个地方,编译器就会抛出错误。

2.5 Type Switch

switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。

switch x.(type){case type:statement(s);      case type:statement(s); /* 你可以定义任意个数的case */default: /* 可选 */statement(s);
}
package mainimport "fmt"func main() {var x interface{}switch i := x.(type) {case nil:	  fmt.Printf(" x 的类型 :%T",i)                case int:	  fmt.Printf("x 是 int 型")                       case float64:fmt.Printf("x 是 float64 型")           case func(int) float64:fmt.Printf("x 是 func(int) 型")                      case bool, string:fmt.Printf("x 是 bool 或 string 型" )       default:fmt.Printf("未知型")     }   
}

运行结果:

x 的类型 :<nil>

今日学习总结:

在今天的学习中,我们深入了解了Golang中的程序流程结构和条件语句。我们学习了顺序结构、分支结构和循环结构,以及如何使用它们控制程序的执行流程。特别地,我们探讨了条件语句,包括if语句和switch语句,以及它们的变体。

通过if语句,我们可以根据条件的真假执行相应的代码块。而switch语句则提供了一种更简洁和可读性更好的方式来处理多个条件情况。我们还学习了fallthrough关键字,它可以在switch语句中执行下一个case的代码块。

通过今天的学习,我们对Golang的流程控制和条件判断有了更深入的理解。这些基础知识将为我们编写更复杂和灵活的程序奠定坚实的基础。在接下来的学习中,我们将进一步探索Golang的高级特性和应用场景。

在这里插入图片描述

结语

通过今天的学习,您已经踏上了Golang的学习之旅。在未来的日子里,您将探索Golang的各个方面,从基础概念到高级技巧,从实际应用到性能优化。
学习一门编程语言是一个持续的过程,每一天都是您向Golang的精通迈进的重要一步。我鼓励您坚持每天学习,保持热情和好奇心,解决挑战并享受成功的喜悦。

在您的学习旅程中,不要忘记参与社区和与其他Golang开发者交流。分享您的见解和经验,向他人学习,并在开源项目或实际应用中展示您的技能。

如果您在学习过程中遇到困难或有任何问题,不要犹豫向社区和专家寻求帮助。持续学习,勇敢探索,您将在Golang领域取得令人瞩目的成就。

最后,感谢您的阅读和支持!祝愿您在未来的每一天中都能够成为一名精通Golang的开发者!

期待听到您在学习过程中的进展和成就。如果您需要进一步的帮助,请随时告诉我。祝您在学习Golang的旅程中取得巨大成功!

如果您在学习过程中有任何疑惑,请点击下方名片,带您一对一快速入门 Go语言 的世界 ~


http://www.ppmy.cn/news/386801.html

相关文章

两万字深入浅出yolov5+deepsort实现目标跟踪,含完整代码, yolov,卡尔曼滤波估计,ReID目标重识别,匈牙利匹配KM算法匹配

目录 一&#xff1a;前言 二&#xff1a;跟踪部分&#xff1a; ReID结构​编辑 第一帧&#xff08;生成track&#xff09; 第二帧 更新先验的预测值 状态矩阵的初始化 对预测值进行更新&#xff08;矫正&#xff09;&#xff1a; 匹配完成&#xff0c;进行矫正的更新&…

关于Nokia6630 Alert出现乱码问题

http://www.3geye.net/bbs/thread-179-1-1.html 大家在 开发软件的时候经常要用到高级的AlertUI&#xff0c;我也用在其他机器上可以正确的显示文字&#xff0c;在Nokia 6630 上却显示几个口字&#xff0c;全部是乱码&#xff0c;除非中&#xff0c;请文大家有没有遇到这样的问…

Nokia N-GAGE QD 新人菜鸟教程

QD的必备硬件1&#xff1a;MMC卡&#xff08;建议使用128M 256M&#xff09;2&#xff1a;读卡器&#xff08;QD没有USB插口&#xff0c;读卡器是连接MMC卡最常用的方法&#xff0c;这样就可以把电影&#xff0c;游戏&#xff0c;MP3&#xff0c;其他虾米软件都可以放上MMC里了…

塞班为什么那时候只有java_回忆S60(塞班)年代的JAVA游戏

那时候的手机内存很小,要用来玩游戏的话就必须买一个大内存的MMC卡,手机也没那么多款式,班上同学几乎用着同样的几款手机,系统还都是 S60 。 S60 系统的游戏有三大类,分别是 N-Gage 、 SIS 、 JAVA ,这顺序恰好也是游戏可玩性的排序,都说 JAVA 游戏最为简单,可玩性一般…

java添加两个音乐_[JavaME]手机同时播放两个音乐 探讨一

[JavaME]手机同时播放两个音乐 探讨一 摘要&#xff1a; 本文档以及后续文档试图一步一步地探讨如何在手机上同时播放两个声音文件&#xff0c;譬如一个是背景音乐&#xff0c;一个是按键触发的游戏音效。请慢慢看下去&#xff0c;我们尽量糅合进各方汇集的一些经验。 1背景 摘…

空间大战java_回忆S60(塞班)年代的JAVA游戏:有没有哪一款是你在课堂偷偷玩的?...

原标题:回忆S60(塞班)年代的JAVA游戏:有没有哪一款是你在课堂偷偷玩的? 那时候的手机内存很小,要用来玩游戏的话就必须买一个大内存的MMC卡,手机也没那么多款式,班上同学几乎用着同样的几款手机,系统还都是S60。S60系统的游戏有三大类,分别是N-Gage、SIS、JAVA,这顺序…

蓝牙搜索服务时,报kern-exec3异常

做蓝牙开发时&#xff0c;遇到这个问题&#xff0c;困扰了好久&#xff0c;这个问题是随机出现的。 搜索某个设备的服务时&#xff0c;需创建一个CSdpAgent对象&#xff1a;CSdpAgent::NewL( MSdpAgentNotifier&, TBTDevAddr ); 先前的做法是创建前判断 if(iAgent ! NULL…

angular学习笔记

文章目录 创建angular项目根模块定义angular组件在angular定义属性显示到html模板上angular触发事件angular中的双向数据绑定angular中的指令ngModel的使用ngModelGroup指令angular表单验证angular管道&#xff08;vue中的过滤器&#xff09;自定义属性指令Host宿主指令angular…