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

news2024/11/28 12:51: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 main

import "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 main

import (  
    "fmt"
)

func main() {  
    if num := 10; num % 2 == 0 { //checks if number is even
        fmt.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 main

import "fmt"

func main() {
   /* 定义局部变量 */
   var grade string = "B"
   var marks int = 90

   switch 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 main

import (
	"fmt"
)

type data [2]int

func main() {
	switch x := 5; x {
	default:
		fmt.Println(x)
	case 5:
		x += 10
		fmt.Println(x)
		fallthrough
	case 6:
		x += 20
		fmt.Println(x)

	}

}

运行结果:

15
35

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

示例代码:

package main

import (  
    "fmt"
)

func main() {  
    num := 75
    switch { // expression is omitted
    case 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 main

import "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.coloradmin.cn/o/646647.html

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

相关文章

【Unity入门】25.零基础实现游戏Demo--神鸟大战怪兽

【Unity入门】零基础实现游戏Demo--神鸟大战怪兽 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 (一) 前言 经过了两个月的学习&#xff0c;我们也顺利的完成了入门课程&#xff0c;最后就用一个Demo作为我们的结课句…

动态规划算法(子序列专题1)

动态规划算法专辑之子序列问题&#xff08;1&#xff09; 本专栏将从状态定义、状态转移方程、初始化、填表顺序、返回值这五大细节来详细讲述动态规划的算法的解题思路及代码实现 一、什么是子序列 子数列&#xff0c;又称子序列&#xff0c;在数学中&#xff0c;某个序列的…

工时表:如何跟踪团队进度?

工时表可以记录考勤&#xff0c;但你知道它还能帮助你管理项目和监控团队绩效吗&#xff1f;在本文中&#xff0c;了解如何将在线时间跟踪与你的日常工作流程相结合&#xff0c;以调整你的团队并提高灵活性。 在线时间追踪与手动 传统上&#xff0c;工时表在每天或每周开始时…

基于Java企业办公自动化系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

【干货分享】安卓加固原理分享

之前写过几篇ios加固的文章&#xff0c;感兴趣可以看一下。最近攒了一下收集的一些资料&#xff0c;打算简单写一下安卓加固相关的内容。今天先简单写一篇安卓加固原理的分享。 App会面临的风险 我们首先了解一下为什么需要加固&#xff0c;尤其是安卓APP&#xff0c;下面是A…

【网络攻击】面对网络攻击,我们该如何防范?

网络攻击手段的种类繁多&#xff0c;其中主要攻击手段的有钓鱼网站、恶意软件社交媒体欺诈等。在这篇文章中&#xff0c;我们将探讨这些攻击方式&#xff0c;并提供几种有效的防范方法。 一、钓鱼网站 钓鱼网站是一种欺诈行为&#xff0c;攻击者以虚假的方式获取用户的个人信息…

FPC的发展及应用,软板行业未来将持续增长

FPC系列文章目录 1.什么是FPC 2.什么是R-FPC 3&#xff0c;FPC的基材 4.FPC基材压延铜和电解铜的区别 5&#xff0c;FPC的辅材 6&#xff0c;FPC常见的四种类型 7&#xff0c;FPC的生产流程简介 8&#xff0c;R-FPC的生产流程简介 9&#xff0c;FPC的发展及应用 提示&…

【LLM GPT】大型语言模型 理解和实现

目录 1 概述1.1 发展历程1.2 预训练监督学习预训练的好处 1.3 增强式学习1.4 对训练数据的记忆1.5 更新参数1.6 AI内容检测1.7 保护隐私 1 概述 怎么学习&#xff1f;——给定输入和输出&#xff1a; 但是这样做不现实&#xff0c;因为这样输入-输出需要成对的资料&#xff0…

SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据

SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据 更多优秀文章&#xff0c;请扫码关注个人微信公众号或搜索“程序猿小杨”添加。 一、背景&#xff1a; 利用ThreadPoolTaskExecutor多线程异步批量插入&#xff0c;提高百万级数据插入效率。ThreadPoolTaskExecut…

AI+低代码:开发革命的崭新纪元!带你一文速通了解

信息技术、通信技术和计算能力的迅速发展&#xff0c;AI技术在诸多领域中掀起了一股革命浪潮&#xff0c;成为推动社会进步和发展的重要力量&#xff0c;也是许多国家和企业日益重视和投资的方向。 而全球化和技术革新的深入推进&#xff0c;传统产业对劳动力的需求逐渐减少&am…

阿里飞猪三面

&#xff08;有许多人是用青春的幸福作成功的代价的。——莫扎特&#xff09; 背景 该岗位是阿里飞猪的前端部门&#xff0c;岗位名称是node.js高级/专家开发工程师。主要负责用NodeJs作为后端技术&#xff0c;向上层Java&#xff0c;Node等业务服务&#xff0c;提供中间层基础…

操作教程:如何正确配置让EasyNVR级联至EasyNVS平台?

EasyNVS是EasyNVR的云管理平台&#xff0c;可实现内网监控上云&#xff0c;视频汇聚等功能。近期经常有用户咨询EasyNVR如何级联至EasyNVS平台进行云端统计和管理&#xff0c;在今天的文章中&#xff0c;我们来详细介绍一下。 1、配置EasyNVS 1&#xff09;运行EasyNVS之前&a…

Quarkus - 发布JSON Restful服务

目标 基于实现第一个Hello World发布一个JSON的Restful服务&#xff0c;该服务提供GET,POST,DELETE三个接口&#xff0c;分别是获取水果列表&#xff0c;添加水果&#xff0c;根据水果名字删除水果。 发布Rest服务 POM配置 添加jackson扩展的依赖 <dependency><gr…

Oralce系列十八:Oracle RAC

Oracle RAC 1. Oracle RAC介绍1.1 基本概念1.2 Oracle RAC应用场景1.3 Oracle RAC的优缺点 2. Oracle RAC架构3. Oracle RAC 的安装 1. Oracle RAC介绍 1.1 基本概念 Oracle RAC&#xff08;Oracle Real Application Server Cluster&#xff09;是一种分布式数据库解决方案&a…

涂鸦T2-U开发板快速入门

文章目录 T2-U模组概述特性 1、环境搭建2、SDK下载3、编译3.1、 命令编译3.2、 命令编译清除3.3、 Wind-IDE 编译3.4、编译完成 4、下载4.1、 GUI工具4.2、Wind IDE一键下载 5、 运行 涂鸦 T2-U 开发板 是一款专为开发者打造的智能硬件产品原型开发板。它可与其他功能电路模组或…

App的回归测试,有什么高效的测试方法?

直接抛出观点&#xff1a;高效的测试方法当然有&#xff0c;那就是采用【接口自动化】。 为了系统阐述这个问题&#xff0c;让你能有较强烈的获得感&#xff0c;本篇文章将采用下列结构进行展开&#xff1a; 1、回归测试&#xff0c;测哪些东西&#xff1f; 2、传统的回归测试…

容器认证有什么等级?考试内容是什么?

信息通信行业是进几十年新兴起的一个行业&#xff0c;对我们的生活产生了巨大的影响&#xff0c;传统的购物、出行方式发生了巨大的变化&#xff0c;而且我们的眼界更加开阔。可以了解到世界各地的风土人情&#xff0c;这一切都离不开信息通信技术的发展&#xff0c;同时市场为…

拥有Android开发经验? 走出焦虑圈,车载应用开发正好合适你!

行业前景 当前&#xff0c;车联网已成为智能交通的重要发展方向之一。车载Android应用可以为车辆提供智能化服务&#xff0c;帮助驾驶者增强车辆控制和安全&#xff0c;提供大量娱乐和信息服务&#xff0c;如导航、音乐、天气预报、电子地图等。而且&#xff0c;车联网相关政策…

为什么APP安全很重要?APP盾如何提供帮助?

为什么APP安全很重要&#xff1f; APP安全是流程、功能、控制、功能、最佳实践和工具的有效和高效组合&#xff0c;用于通过主动查找和保护各种漏洞来确保各类APP/软件的安全。 应用安全非常重要的4个主要原因 1.确保关键数据资产的安全 数据是新的石油&#xff0c;攻击者最…

抖音seo矩阵号源码开发分享(一)

抖音SEO矩阵系统源码开发&#xff0c;需要遵循一下步骤&#xff1a; 1. 确定需求和功能&#xff1a;明确系统的主要目标和需要实现的功能&#xff0c;包括关键词研究、短视频制作、外链建设、数据分析、账号设置优化等方面。 2. 设计系统架构&#xff1a;根据需求和功能确定系…