【go语言】条件,选择,循环和特殊语句

news2024/11/27 14:41:35

if语句

a:=10
if a>20{
	fmt.Printf("a大于20")
}else if a<10{
	fmt.Printf("a小于10")
}else{
	fmt.Printf("a大于等于10,a小于等于20")
}

go语言的if语句和C语言的if语句的差不多,需要注意的是else 和else if要写在括号右边;go语言的if语句还可以有一个子语句

if语句的子语句

if语句的子语句的作用是用来初始化局部变量

if a:=10;a<20{
    fmt.Printf("a小于20")
}else{
    fmt.Printf("a小于20")
}

但要注意的是,子语句中只能有一个表达式

switch语句

switch语句有两种类型

  • 表达式switch
  • 类型switch

表达式switch

表达式switch的一种写法和C语言的switch类似,不过没有break语句。

	grade:=80
	switch grade{
	case 60:
		fmt.Println("及格")
	case 80:
		fallthrough
	case 90:
		fmt.Println("优秀")
	}

fallthrough关键字的作用是把case的控制权交给下一个case,这个程序输出优秀
在这里插入图片描述

grade:=80
switch{
	case grade>=60:
		fmt.Println("及格了")
	case grade<60:
		fmt.Println("没有及格")
	}

类型switch

var x interface{}
x=1
switch i:=x.(type){
case int:
	fmt.Printf("x的类型是%T\n",i)
case float64:
	fmt.Printf("x的类型是%T",i)
default:
	fmt.Println("其他类型");
}

在这里插入图片描述

类型switch判断的变量必须是具有接口类型的变量

循环语句

go语言只有for循环没有while循环

for循环的几种形式

for initialization;condition;post{}

for i:=0;i<5;i++{
	fmt.Println(i)
} 

在这里插入图片描述

1for ;condition;post{}

for ;i<5;i++{
	fmt.Println(i)
}

在这里插入图片描述

for condition{} 相当于while循环

for{} 死循环

for range

str:="abcd"
for i,ch:=range str{
	fmt.Printf("字符串的第%d个字符值为%d",i,ch)
}
for _,ch:=range str{
	fmt.Println(ch)
}
for i,_:=range str{
	fmt.Println(i)
}

在这里插入图片描述

for和range结合可以轮询字符串的每一个字符,这种方式也可以用来轮询数组、切片、字典等。range返回的是一对 索引–值

延迟语句defer

defer用来延迟调用一个函数(在函数的最后执行),只能在一个函数内部使用
而且函数是执行完所有defer语句才执行return语句的。

func main(){
	defer fmt.Println("好")
	fmt.Println("你")
}

在这里插入图片描述

那么在一个函数内有多个defer语句会以什么顺序执行?
最后的defer语句最先执行,defer语句就是一个栈。

func main(){
	for i:=0;i<5;i++{
		defer fmt.Println(i)
	}
}

在这里插入图片描述

break语句

var i int =0
for{
	if i>5{
		break
	}
	i++
	fmt.Println("for循环结束了?")
}
fmt.Println("for循环结束了")

在这里插入图片描述

go语言的break有一个比较坑的地方

for{
	grade:=80
	switch{
	case grade>60:
		fmt.Println("及格了")
		break
	case grade==60:
		fmt.Println("差点没及格")
	case grade<60:
		fmt.Println("没有及格")

	}
}

这个时候break根本就不会跳出for循环,也就是说这个循环还是个死循环!!!要想跳出这个循环就必须要用标签
在这里插入图片描述

loop:for{
	grade:=80
	switch{
	case grade>60:
		fmt.Println("及格了")
		break loop
	case grade==60:
		fmt.Println("差点没及格")
	case grade<60:
		fmt.Println("没有及格")
	}
}

在这里插入图片描述

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

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

相关文章

首批Sui教育资助计划获奖者公布,超过30万美元奖金已发放

我们非常高兴地宣布Sui教育资助计划的第一批获奖者&#xff0c;该资助计划旨在支持那些有兴趣培养下一代创新者的开发者。本轮共有9个团队获得了超过30万美元的资助&#xff0c;所选提案包括开发新手营、课程、游戏化学习任务、开发者教育工具和技术workshops等。 Sui教育资助…

手机弱网测试工具:Charles

我们在测试app的时候&#xff0c;需要测试弱网情况下的一些场景&#xff0c;那么使用Charles如何设置弱网呢&#xff0c;请看以下步骤&#xff1a; 前提条件&#xff1a; 手机和电脑要在同一局域网内 Charles连接手机抓包 一、打开Charles&#xff0c;点击代理&#xff0c;…

Java笔记一

D:\java_dev\Java\jdk-20 创建 E:\javawork Hello World! E:\javawork-----新建HelloWorldApp.java 记事本打开文件 一&#xff1a; 在HelloWorldApp.java输入代码 public class HelloWorldApp{public static void main (String args[]){​ System.out.println(“H…

城市级数字孪生底座平台具有新内涵

关键词&#xff1a;数字孪生、数字孪生系统、数字孪生发展、城市数字孪生 **数字孪生城市是新型智慧城市建设新模式。**智慧城市建设模式是不断发展演化的&#xff0c;与上一阶段智慧城市建设相比&#xff0c;**内容形式上&#xff0c;**数字孪生城市建设更加注重城市全实体要…

Rust中的结构体

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…

人工智能的未来:从 Jetson 到 GPT,沙龙见闻与洞察

前言 在当今数字化时代&#xff0c;人工智能正以惊人的速度改变着我们的生活和工作方式。从智能语音助手到自动驾驶汽车&#xff0c;从智能家居到医疗诊断&#xff0c;人工智能技术已经广泛渗透到各个行业&#xff0c;并为其带来了巨大的变革和创新。越来越多的行业专家、学者…

MQTT服务器搭建

本次搭建的MQTT服务器是emqx提供的服务器 1、下载 https://www.emqx.com/en/downloads/broker 从官网下载5.2.0版本emqx-5.2.0-windows-amd64.zip 下载完成直接安装 2、配置&#xff0c;修改端口号 mqtt默认端口号 常规的用法&#xff0c;我们一般使用和开放这两个端口&am…

037:vue项目监听页面变化,动态设置iframe元素高度

第037个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

Element-ui 标签页el-radio-button左边框不显示问题

想实现一个tab切换的功能 看tabs组件挺相似的直接拿来用 默认是下边的效果 分开点 发现右边的白的按钮左边框没了 选中右边 左边按钮的边框正常 emmmm 选择按钮后查看样式 发现他有个border-left:0 去掉之后显示正常 在代码里添加border属性后显示正常了 但又出现新的问题…

二、飞线或者路线的实现(TubeBufferGeometry:管道缓冲几何体)

在做three大屏的时候我们经常会遇到绘制发光路线和指向的情况&#xff0c;那么就需要使用到管道&#xff08;TubeBufferGeometry&#xff09;这个API。先看看他能达到的几种效果。 一、效果图 1平面效果 2飞线效果 二、那么我们直接看代码&#xff0c;一共有6步。 定义数据 l…

作业错题一

1、内联函数的错题 首先&#xff0c;对内联函数的定义不清楚&#xff0c;同时对内联函数的原理有点模糊&#xff0c;还有一些注意的点忽略了&#xff1b; this指针的理解也出现错误&#xff01; 下一题是构造函数和析构函数的错误&#xff1a; 构造函数时先定义先构造&#…

无法删除目录(设备或资源忙)

文章目录 无法删除目录&#xff08;设备或资源忙&#xff09;问题原因解决方案步骤一&#xff1a;首先找到挂载的位置步骤二&#xff1a;取消挂载步骤三&#xff1a;查看挂在情况 无法删除目录&#xff08;设备或资源忙&#xff09; 问题 原因 网络共享挂载导致无法删除 解决…

Java Gradle

目录 1. Gradle简介 1.1 什么是Gradle 1.2 Gradle优点 1.2.1 自动化构建 1.2.2 Gradle相当于构建工具的进化版 1.2.3 对于Gradle优点&#xff0c;官网是这么说的 1.3 Grade 的版本说明 2. Groovy语言基础 2.1 基础语法 2.2 String 与 GString 2.2.1 String 2.2.2 插…

最新SSL证书申请源码,支持API接口,支付在线充值

最新SSL证书申请源码&#xff0c;支持API接口&#xff0c;支付在线充值 目前测试还不需要授权&#xff0c;以后更新版就不知道了 SSL证书保证网络安全的基本保障。向您介绍我们的在线生成SSL证书系统 支持在线生成SSL证书系统&#xff0c;用户登录可在线申请SSL&#xff0c;…

Nacos内核设计之一致性协议(上)

Nacos一致性协议 Nacos技术架构 先简单介绍下Nacos的技术架构 从而对nacos有一个整体的认识 如图Nacos架构分为四层 用户层、应用层、核心层、各种插件 再深入分析下nacos一致性协议的发展过程及原理实现 为什么nacos需要一致性协议 Nacos是一个需要存储数据的一个组件 为了实…

4k、VR与万兆光网

“全光万兆”对VR意义重大。 pico4的分辨率 PICO 4 的单眼分辨率是 2160 2160&#xff0c;整体分辨率高达 4320 2160。这是一款高性能的 VR 一体机&#xff0c;采用了 2.56 英寸的 Fast-LCD 屏幕&#xff0c;最高可实现 90Hz 刷新率&#xff0c;还有 1200 PPI 和 20.6 PPD 的…

基于Python+Tkinter实现一个贪食蛇小游戏

你是否还记得那个时代&#xff0c;当我们的手机还没有触摸屏&#xff0c;游戏也只有像“贪食蛇”这样的经典款&#xff1f;当时&#xff0c;许多人都沉迷于控制一条小蛇吃食物的乐趣中。而今&#xff0c;让我们利用Python和Tkinter&#xff0c;一起重温那个时代&#xff0c;制作…

多平台兼容性:跑腿系统开发的移动端和Web端技术选项

随着移动设备和Web浏览器的广泛使用&#xff0c;跑腿系统的开发需要考虑多平台兼容性。本文将讨论一些在开发跑腿系统的移动端和Web端时可用的技术选项&#xff0c;并提供示例代码以帮助您入门。 移动端技术选项&#xff1a; 1. React Native React Native是一个流行的移动应…

Linux shell编程学习笔记1:关于shell的前世今生

一、什么是Shell&#xff1f; Shell英文单词的原意是“外壳”&#xff0c;在计算机领域专指在操作系统&#xff08;Operating System&#xff09;外层&#xff0c;提供用户界面&#xff08;User Interface&#xff09;的程序&#xff0c;主要负责将用户的命令&#xff08;Comma…

优彩云采集器下载-免费优彩云采集器下载地址

免费优彩云采集器。您是否曾为了数据采集而感到头疼不已&#xff1f;是否一直在寻找一种能够轻松、高效地获取所需数据的方法&#xff1f;别着急&#xff0c;让我们一起来了解如何通过优彩云采集器解决这些问题&#xff0c;从而让您产生购买的欲望。 免费全自动采集发布批量管理…