【30天熟悉Go语言】7 Go流程控制之分支结构if、switch

news2025/2/2 20:45:16

文章目录

  • 一、前言
  • 二、if
    • 1、单分支
      • Go语法规范:
    • 2、双分支
      • Go语法规范
    • 3、多分支
  • 三、switch
    • 1、基本语法
    • 2、语法规范
      • 1)switch
      • 2)case
      • 3)default
  • 四、总结

一、前言

在这里插入图片描述

Go系列文章:

  1. GO开篇:手握Java走进Golang的世界
  2. 2 Go开发环境搭建、Hello World程序运行
  3. 3 Go编程规约和API包
  4. 4 Go的变量、常量、运算符
  5. 5 Go 基本数据类型
  6. 6 Go 复杂数据类型之指针

Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html

二、if

if 语句由布尔表达式后紧跟一个或多个语句组成。

在这里插入图片描述

if分支结构和其他语言是一样的概念,仅仅API的使用上有细微差别。

1、单分支

基本语法:

if (条件表达式) {
    逻辑代码
}

当条件表达式为true时,会执行{}中的逻辑代码。

package main

import "fmt"

func main() {
	age := 35
	if age >= 35 {
		fmt.Println("正式工作了,开整开整")
	}
}

Go语法规范:

  • 条件表达式左右的()可以不写,建议不写;
  • if和表达式中间,一定要有空格;
  • {}是必须有的,哪怕只写一行代码;在Java中if代码块中仅有一行代码时,可以省略{}

2、双分支

基本语法:

if 条件表达式 {
    逻辑代码1
} else {
    逻辑代码2
}

当条件表达式成立时,执行逻辑代码1;否则执行逻辑代码2。

func main() {
	age := 35
	if age >= 35 {
		fmt.Println("正式工作了,开整开整")
	} else {
		fmt.Println("该吃吃该喝喝,耍一耍")
	}
}

Go语法规范

  • else 和 } 不能分行。下面的代码编写方式是错误的

    if 条件表达式 { 
       逻辑代码1 
    } 
    else { 
       逻辑代码2 
    } 
    

    在这里插入图片描述

3、多分支

基本语法:

if 条件表达式1 {
    逻辑代码1
} else if 条件表达式2 {
    逻辑代码2
} else {
    逻辑代码3
}

如果走了一个分支,其他分支不会再去判断执行。

package main

import "fmt"

func main() {
	age := 35
	if age >= 35 {
		fmt.Println("正式工作了,开整开整")
	} else if age <= 3 {
		fmt.Println("good good study, day day up")
	} else {
		fmt.Println("该吃吃该喝喝,耍一耍")
	}
}

三、switch

switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。

switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面不需要再加 break;默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。

在这里插入图片描述

1、基本语法

语法:

switch 表达式 {
    case value1...:
        代码逻辑1
    case value5,value6...:
        代码逻辑2
    case value7...:
        代码逻辑3
    default:
        代码逻辑4
}
package main

import "fmt"

func main() {
	score := 98
	// 根据分数判断等级
	switch score / 10 {
	case 9, 10:
		fmt.Println("优秀")
	case 7, 8:
		fmt.Println("良好")
	case 6:
		fmt.Println("及格")
	default:
		fmt.Println("不及格")
	}
}

default是用来“兜底”的一个分支,当其它case分支都不走时会走default分支。

2、语法规范

1)switch

  1. switch后是一个表达式,可以是常量值、变量、有返回值的函数…
    • 在Java中,常用的Java8里,支持的数据类型为:byte、short、int、long、char、String、enum。
  2. switch后可以不跟表达式,直接仿作if分支来使用;
    在这里插入图片描述
  3. switch后也可以直接声明/定义一个变量,分号结束,不推荐使用
    在这里插入图片描述
  4. switch穿透:利用fallthrough关键字,如果在case语句块后增加fallthrough ,则会继续执行下一个case,default也能穿透到;
    在这里插入图片描述

2)case

  1. case后面的值如果是常量值,不能重复;
    在这里插入图片描述

  2. case后值的数据类型 必须和switch表达式返回值的数据类型一致;
    在这里插入图片描述

  3. case后可以跟多个值,使用逗号间隔,比如:case value1,value2,value3
    在这里插入图片描述

  4. case后面不需要加break;默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case。

3)default

  1. default分支可以放在任意位置上,不一定非要放在最后;

四、总结

go语言中对if、switch语法的要求更加严格,相对于Java等高级语言而言,也有了更多的特性:比如:switch支持表达式、支持穿透、case支持多个值。

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

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

相关文章

手机APP大用户并发测试

一、背景 随着智能手机近年来的快速增长&#xff0c;从游戏娱乐到移动办公的各式各样的手机APP软件渗透到我们的生活中&#xff0c;对于大型的手机APP测试不仅要关注它的功能性、易用性还要关注它的性能&#xff0c;最近发现LoadRunner12可以对手机APP做性能测试&#xff0c;但…

寻味一座城,从吃吃吃开始

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 小黑 运营 / SandLiu 卷圈 监制 / 姝琦 文案 / 小黑 产品统筹 / bobo 场地支持 / 声湃轩天津站 为了再也不用在节目里喊“我们真的不是美食节目”&#xff0c;2023年7月起&#xff0c;原汤话原食将更名为“记者下班”…

记录--极致舒适的Vue可编辑表格

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 使用ElementPlus的Table啥都好&#xff0c;就是没有可编辑表格&#xff01;&#xff01;&#xff01;&#x1f62d; 既然UI库不支持&#xff0c;那我们实现一个可编辑表格是很难的事么&#xff1f;&am…

Avalon 学习系列(五)—— 过滤器

Avalon 本身有很多过滤器&#xff0c;例如 date、number等文本过滤器、循环过滤器&#xff1b;avalon 也提供了方法可以根据需求自定义过滤器。 示例&#xff1a; &#xff08;1&#xff09;定义一个 myFunc 的个性化过滤器&#xff0c;并加在元素上&#xff1b; &#xff0…

一文带你玩转 RustChinaConf 2023,内含赞助商展位活动福利和 Workshop 介绍

除了两天干货满满的会议外&#xff0c;RustChinaConf 的赞助商也准备了精美的周边礼物等待大家去打卡。每位参会者在签到的时候会获得一张集章卡&#xff0c;集齐上面所有的章&#xff0c;可至签到处兑换精美礼物一份。偷偷剧透一下&#xff0c;奖品有大家喜欢的 Rust 小螃蟹玩…

【计算机网络】第一章 概述(上)

文章目录 第一章 概述1.2 因特网概述1.2.1 网络、互连网&#xff08;互联网&#xff09;和因特网1.2.2 因特网发展的三个阶段1.2.4 因特网的组成 1.3 三种交换方式1.3.1 电路交换1.3.2 分组交换1.3.3 报文交换1.3.4 三种方式对比 1.4 计算机网络的定义 第一章 概述 1.2 因特网概…

「深度学习之优化算法」笔记(二)优化算法的分类

1. 优化算法的分类 1.1常见的优化算法 在分类之前&#xff0c;我们先列举一下常见的优化算法&#xff08;不然我们拿什么分类呢&#xff1f;&#xff09; 1.遗传算法Genetic algorithm 2.粒子群优化算法Particle Swarm Optimization 3.差分进化算法Differential Evolution 4.人…

springboot第27集:springboot-mvc,WxPay

在数据库中&#xff0c;DISTINCT 关键字用于查询去重后的结果集。它用于从查询结果中去除重复的行&#xff0c;只返回唯一的行。 要使用 DISTINCT 关键字&#xff0c;可以将其放置在 SELECT 关键字之前&#xff0c;指示数据库返回去重后的结果。 请注意&#xff0c;DISTINCT 关…

Linux常用命令——getenforce命令

在线Linux命令查询工具 getenforce 显示当前SELinux的应用模式&#xff0c;是强制、执行还是停用。 补充说明 grename命令可以重命名卷组的名称。 语法 getenforce例子 查看当前SELinux的应用模式。 [rootlocalhost ~]# getenforce Enforcing在线Linux命令查询工具 原文…

ChatGPT时代,我的新书《智慧共生》上市了

告诉你一个好消息&#xff0c;我在人民邮电出版社的第二本书《智慧共生&#xff1a;ChatGPT 与 AIGC 生产力工具实践》刚刚上市&#xff0c;你现在就可以在 京东 和 当当买到了。 有人把 2022 年称作 AIGC&#xff08;人工智能生成内容&#xff09; 的元年&#xff0c;我深表赞…

浅谈数据中台之数据开发

目 录 01 前言‍ 02 中台概念及背景 ‍‍‍‍‍‍‍ 03 数据中台建设方法‍‍‍‍‍‍ 04 数据开发实践 01‍ 前言‍‍ 2015年阿里在国内首次提出了中台概念&#xff0c;由阿里引领发展&#xff0c;迅速在互联网企业中形成了一股浪潮。在数字化转型的道路上&#xff0c;为了…

【AUTOSAR】UDS协议的代码分析与解读(五)----ECU诊断服务

8 诊断服务 8.1 总览 此章节定义了本规范中可使用的诊断服务及其执行规则。 下表列出了h事业部定义的所有UDS诊断服务。ECU最终实现与下述定义不符之处必须得到h事业部 的认可。服务实现内容需在零部件诊断规范中详细说明。 表 9 诊断服务支持列表 诊断服务列表 APP Bootlo…

【手撕代码】同步 FIFO、LIFO/Stack

FIFO 是FPGA设计中最有用的模块之一。FIFO 在模块之间提供简单的握手和同步机制&#xff0c;是设计人员将数据从一个模块传输到另一个模块的常用选择。 在这篇文章中&#xff0c;展示了一个简单的 RTL 同步 FIFO&#xff0c;可以直接在自己的设计中配置和使用它&#xff0c;该设…

社区供稿 | RLHF 实践中的框架使用与一些坑 (TRL, LMFlow)

1 前言 之前看见文章总结了常见的一些 RLHF 框架的经验, 但是似乎没看见 Hugging Face 自己维护的 TRL 库的相关文章, 正好最近调 TRL 比较多, 就想写一个文章分享一下使用过程中踩到的坑&#xff0c;另外也介绍一下我们的全流程框架 LMFlow 。 LMFlow 框架示意图。 我们主要用…

架构思维的六要素

很多人都在私信问我随着ChatGPT等技术的兴起&#xff0c;自己的饭碗会不会没了。我的观点是&#xff1a;ChatGPT能做的工作十几年前早就没了。 十几年前还看到过招聘广告上写招程序员的&#xff0c;现在都是工程师起步&#xff0c;工程师是要有架构思维的。 像十几年前的黄金时…

手写SpringBoot启动器主要步骤

这里写目录标题 背景过程2.1自启动实现原理2.2手动实现SpringBoot自启动2.2.1宏观2.2.1微观2.2.1.1三个服务之间调用2.2.1.2自定义注解2.2.1.1业务组装2.2.1.3启动类 升华自定义注解&#xff1a;手动装配组件&#xff1a;简化启动过程&#xff1a;自动化注入依赖&#xff1a;简…

马原第三章复习1.

唯物史观和唯心史观过去出过小题 社会意识出小题 社会存在一般出大题 124 社会存在和社会意识(往往出大题) 社会历史性的基本问题 两种根本对立的历史史观 唯心主义: 至多考察人的思想动机 没有考虑思想背后的物质动因和经济根源 把社会史观看成人的思想,,不懂得…

关于酒店宾馆电气火灾隐患的预防与整改措施介绍 安科瑞 许敏

摘要&#xff1a;本文分析了酒店、宾馆电气火灾隐患的特点及产生的主要原因&#xff0c;并依此提出了消除火灾隐患的整改措施。 关键词:酒店宾馆&#xff1b;火灾&#xff1b;隐患&#xff1b;预防&#xff1b;整改&#xff1b;措施 1前言 随着旅居服务业的快速发展&#xf…

CVPR 2023 | 香港理工提出GrowSP:3D场景的无监督语义分割

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【目标检测和Transformer】交流群 GrowSP: Unsupervised Semantic Segmentation of 3D Point Clouds 论文链接&#xff1a;https://arxiv.org/abs/2305.16404 代码&#xff1…

2023/6/11总结

CSS Less嵌套 子元素的选择器可以直接写在父元素里面。 如果不是它的后代元素&#xff0c;比如你想写伪类选择器、交集选择器&#xff0c;需要在前面加&号。 Less运算&#xff1a; 加减乘除都可以&#xff0c;运算符必须用空格隔开。如果俩个元素都有单位&#xff0…