当前位置: 首页 > news >正文

【go语言实践】基础篇 - 流程控制

if语句

go里面if不需要括号将条件表达式包含起来,这与python也有点类似
if 条件表达式 {

}

if num > 18 {// ...
} else if num > 20 {// ...
} else {// ...
}

需要注意的是go支持在if的条件表达式中直接定义一个变量,变量的作用域只在if范围内,如:

if num := 20; num > 5 {// ...
}

这让我们一些场景可以便捷地存储中间变量

switch语句

go语言的switch分支不需要有break语句,这是与c不同的地方。基本语法如下:
switch expression {
case expression1,expression2,…:
// …
case expression3, expression4,…:
// …
// …
default:
// …
}
golang中是允许多个表达式匹配的,比如expression1或expression2,就会执行第一个case。default语句不是必须的,但为了程序稳定通常需要有默认操作。

switch num {
case 1, 2, 3:fmt.Println("num", num)
case 4, 5, 6:num++
default:fmt.Println("not in range")
}

另外,switch后面也可以不带表达式,这时等价于if -else

switch {
case num == 1:// ...
case num == 2:// ...
default:// ...
}

switch后面也可以定义一个变量,分号结束,通常不这样写:

switch num := 90; {
case num > 90:// ...
default:// ...
}

switch fallthrough

在一个case语句中使用fallthrough,则会继续执行下一个case分支,注意这里下一个分支不用判断,直接执行。但通常不用,条件语句已经足够覆盖所有场景

switch num {
case 10:// ...fallthrough
case 20:// ...
default:// ...
}

type-switch(不懂的后面的文章会讲到)

switch语句还可以用来判断某个interface变量中实际指向的变量类型

var x interface
var y = 10.0
x = y
switch i : x.(type) {case nil:// ...case int:// ...case float64:// ...case func(int) float64:fmt.Printf("x 是 func(int)型")case bool, string://default:// ...
}

for循环语句

go语言的for循环也是不需要用()把表达式给包起来,如:

for num := 0; num <= 10; num++ {// ...
}

此外,for循环可以有以下两种写法

for num < 99 {// 只写循环条件的写法
}for {// 什么条件都不写,相当于无限循环,在内部决定循环终止条件
}// 上面的for等价于
for ; ; {
}

for range遍历字符串

另外,go语言也支持fo range的遍历方式,便于遍历字符串和数组,如:

str1 := "hello, zhangping"
for index, val := range str1 {fmt.Printf("index:%d val=%c\n", index, val)
}

for range遍历字符串时,是按照字符来遍历的,而不是按照字节来遍历的。与我们常规字节遍历的区别在于,像遍历中文字符串,for range会打印一整个中文字符,但常规字节遍历会打印单个字节(一个中文两个字节),通常会乱码
传统的方法想要打印中文,需要转换成rune的切片:

str1 := "hello, 张平"
str2 := []rune(str1)
for i := 0; i < len(str2); i++ {fmt.Printf("%c\n", str2[i])// break// coontinue
}

go里面没有while和do while语句,要跳出循环也是break,跳过本次循环continue,另外go语言也支持goto语句跳到任意语句处,但最好不要用。

相关文章:

【go语言实践】基础篇 - 流程控制

if语句 go里面if不需要括号将条件表达式包含起来&#xff0c;这与python也有点类似 if 条件表达式 { } if num > 18 {// ... } else if num > 20 {// ... } else {// ... }需要注意的是go支持在if的条件表达式中直接定义一个变量&#xff0c;变量的作用域只在if范围内…...

Linux:gdb的简单使用

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、前置理解二、使用总结 前言 gdb是Linux中的调试代码的工具 一、前置理解 我们都知道要调试一份代码&#xff0c;这份代码的发布模式必须是debug。那你知道在li…...

NestJS的微服务实现

1.1 基本概念 微服务基本概念&#xff1a;微服务就是将一个项目拆分成多个服务。举个简单的例子&#xff1a;将网站的登录功能可以拆分出来做成一个服务。 微服务分为提供者和消费者&#xff0c;如上“登录服务”就是一个服务提供者&#xff0c;“网站服务器”就是一个服务消…...

Debian 终端Shell命令行长路径改为短路径

需要修改bashrc ~/.bashrc先备份一份 cp .bashrc bashrc.backup编辑bashrc vim ~/.bashrc可以看到bashrc内容为 # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples# If…...

Ansible变量是什么?如何实现任务的循环?

Ansible 利用变量存储整个 Ansible 项目文件中可重复使用的值&#xff0c;从而可以简化项目的创建和维护&#xff0c;并减少错误的发生率。在定义Ansible变量时&#xff0c;通常有如下三种范围的变量&#xff1a; global范围&#xff1a;从命令行或Ansible配置中设置的变量&am…...

随机梯度下降的代码实现

在单变量线性回归的机器学习代码中&#xff0c;我们讨论了批量梯度下降代码的实现&#xff0c;本篇将进行随机梯度下降的代码实现&#xff0c;整体和批量梯度下降代码类似&#xff0c;仅梯度下降部分不同&#xff1a; import numpy as np import pandas as pd import matplotl…...

渐进推导中常用的一些结论

标题很帅 STAR-RIS Enhanced Joint Physical Layer Security and Covert Communications for Multi-antenna mmWave Systems文章末尾的一个推导。 lim ⁡ M → ∞ ∥ Φ ( w k ⊗ Θ r ) Ω r w H g ∗ ∥ 2 2 M lim ⁡ M → ∞ Tr ⁡ ( g T Ω r w ( w k ⊗ Θ r ) H Φ H Φ…...

网络安全等级保护V2.0测评指标

网络安全等级保护&#xff08;等保V2.0&#xff09;测评指标&#xff1a; 1、物理和环境安全 2、网络和通信安全 3、设备和计算安全 4、应用和数据安全 5、安全策略和管理制度 6、安全管理机构和人员 7、安全建设管理 8、安全运维管理 软件全文档获取&#xff1a;点我获取 1、物…...

java中list的addAll用法详细实例?

List 的 addAll() 方法用于将一个集合中的所有元素添加到另一个 List 中。下面是一个详细的实例&#xff0c;展示了 addAll() 方法的使用&#xff1a; java Copy code import java.util.ArrayList; import java.util.List; public class AddAllExample { public static v…...

关于学习计算机的心得与体会

也是隔了一周没有发文了&#xff0c;最近一直在准备期末考试&#xff0c;后来想了很久&#xff0c;学了这么久的计算机&#xff0c;这当中有些收获和失去想和各位正在和我一样在学习计算机的路上的老铁分享一下&#xff0c;希望可以作为你们碰到困难时的良药。先叠个甲&#xf…...

LLM之RAG理论(一)| CoN:腾讯提出笔记链(CHAIN-OF-NOTE)来提高检索增强模型(RAG)的透明度

论文地址&#xff1a;https://arxiv.org/pdf/2311.09210.pdf 检索增强语言模型&#xff08;RALM&#xff09;已成为自然语言处理中一种强大的新范式。通过将大型预训练语言模型与外部知识检索相结合&#xff0c;RALM可以减少事实错误和幻觉&#xff0c;同时注入最新知识。然而&…...

Android studio:打开应用程序闪退的问题2.0

目录 找到问题分析问题解决办法 找到问题 老生常谈&#xff0c;可能这东西真的很常见吧&#xff0c;在之前那篇文章中 linkhttp://t.csdnimg.cn/UJQNb 已经谈到了关于打开Androidstuidio开发的软件后明明没有报错却无法运行&#xff08;具体表现为应用程序闪退的问题&#xff…...

Spring IoC如何存取Bean对象

小王学习录 IoC(Inversion of Control)1. 什么是IoC2. 什么是Spring IoC3. 什么是DI4. Spring IoC的作用 存储Bean对象1. 创建Bean2. 将Bean注册到Spring中. 取Bean对象.1. 获取Spring上下文信息使用ApplicationContext和BeanFactory的区别 2. 获取指定Bean对象 IoC(Inversion …...

【开源】基于Vue.js的实验室耗材管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 081 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S081。} 文末获取源码&#xff0c;项目编号&#xff1a;S081。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗…...

Datawhale聪明办法学Python(task2Getting Started)

一、课程基本结构 课程开源地址&#xff1a;课程简介 - 聪明办法学 Python 第二版 章节结构&#xff1a; Chapter 0 安装 InstallationChapter 1 启航 Getting StartedChapter 2 数据类型和操作 Data Types and OperatorsChapter 3 变量与函数 Variables and FunctionsChapte…...

量化交易怎么操作?量化软件怎么选择比较好?(散户福利,建议收藏)

一&#xff1a;量化的具体操作步骤是什么呢&#xff1f;1. 数据获取&#xff1a;索取和收集金融市场数据。 2. 策略制定&#xff1a;制定数量交易策略&#xff0c;这包括制定投资目标、建立交易规则和风险控制机制等&#xff0c;这个过程需要不断优化和更新。 3. 编写算法&am…...

什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(上)

驾驭云服务的安全环境可能很复杂&#xff0c;但 AWS IAM 为安全访问管理提供了强大的框架。在本文中&#xff0c;我们将探讨什么是 AWS Identity and Access Management (IAM) 以及它如何增强安全性。我们还将提供有关使用 IAM 连接到 Amazon Relational Database Service (RDS…...

Python从入门到精通七:Python函数进阶

函数多返回值 学习目标&#xff1a; 知道函数如何返回多个返回值 问: 如果一个函数如些两个return (如下所示)&#xff0c;程序如何执行&#xff1f; 答&#xff1a;只执行了第一个return&#xff0c;原因是因为return可以退出当前函数&#xff0c;导致return下方的代码不执…...

uniapp踩坑之项目:使用过滤器将时间格式化为特定格式

利用filters过滤器对数据直接进行格式化&#xff0c;注意&#xff1a;与method、onLoad、data同层级 <template><div><!-- orderInfo.time的数据为&#xff1a;2023-12-12 12:10:23 --><p>{{ orderInfo.time | formatDate }}</p> <!-- 2023-1…...

webpack学习-2.管理资源

webpack学习-2.管理资源 1.这章要干嘛2.加载css注意顺序&#xff01; 3.总结 1.这章要干嘛 管理资源&#xff0c;什么意思呢&#xff1f;管理什么资源&#xff1f;项目中经常会 导入各种各样的css文件&#xff0c;图片文件&#xff0c;字体文件&#xff0c;数据文件等等&#…...

如何快速创建一个轻量美观的导航站?Typecho + MijiNav组合轻松完成

在现在信息过载的数字化时代&#xff0c;信息碎片化问题也越来越严重&#xff0c;拥有一个经过严格筛查的高质量网址导航页&#xff0c;已经成为许多人的需求。一个轻量、美观的导航页可以大大提升工作效率和用户体验。实现一个导航网站的方式有很多&#xff0c;今天&#xff0…...

三极管Ube到底变不变?从静态分析到动态放大,一张图帮你彻底搞懂

三极管Ube到底变不变&#xff1f;从静态分析到动态放大&#xff0c;一张图帮你彻底搞懂 刚接触三极管放大电路时&#xff0c;很多初学者都会被一个看似矛盾的现象困扰&#xff1a;教科书告诉我们三极管的Ube电压恒定为0.7V&#xff0c;但在分析动态放大过程时&#xff0c;又说U…...

Ormar 性能优化:10 个提升数据库查询效率的技巧

Ormar 性能优化&#xff1a;10 个提升数据库查询效率的技巧 【免费下载链接】ormar python async orm with fastapi in mind and pydantic validation 项目地址: https://gitcode.com/gh_mirrors/or/ormar Ormar 是一个专为 FastAPI 设计的 Python 异步 ORM&#xff0c;…...

163MusicLyrics:免费解锁网易云QQ音乐歌词,告别本地音乐“哑巴“时代

163MusicLyrics&#xff1a;免费解锁网易云QQ音乐歌词&#xff0c;告别本地音乐"哑巴"时代 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为本地音乐播放…...

2026 年我作为资深工程师如何使用 LLM Agent:从副驾到主驾的真实工作流转变

从副驾到主驾&#xff0c;2026 年资深工程师的 LLM Agent 实战工作流&#xff1a;哪些交给 Agent&#xff0c;哪些必须自己做。 原文链接&#xff1a;AI 小老六 一年之差&#xff1a;Agent 从「勉强能用」变成了「几乎离不开」 2025 年初&#xff0c;行业里最强的推理模型还是…...

LabVIEW字符串处理保姆级教程:从长度计算到日期格式化,13个实例带你玩转

LabVIEW字符串处理实战指南&#xff1a;从基础操作到高级应用 在工业自动化、测试测量和仪器控制领域&#xff0c;LabVIEW作为图形化编程的标杆工具&#xff0c;其字符串处理能力直接影响着数据解析、通信协议实现等核心功能。本文将通过13个典型场景&#xff0c;系统讲解如何高…...

别再死记硬背了!用USB的NRZI编码和Bit-Stuffing,搞懂自同步通信的底层逻辑

从NRZI编码到自同步通信&#xff1a;USB协议中的时钟同步艺术 当你在调试USB设备时突然发现数据包丢失&#xff0c;或是试图理解为什么USB仅用两根数据线就能实现高速通信&#xff0c;背后的秘密就藏在NRZI编码和位填充&#xff08;Bit-Stuffing&#xff09;这两个看似简单的技…...

3分钟快速激活Windows和Office:KMS智能激活工具终极指南

3分钟快速激活Windows和Office&#xff1a;KMS智能激活工具终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗&#xff1f;Office文档突然变成…...

思源宋体TTF实战秘籍:三步搞定专业中文字体配置

思源宋体TTF实战秘籍&#xff1a;三步搞定专业中文字体配置 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为商业项目寻找合适的中文字体而烦恼吗&#xff1f;Source Han Serif C…...

Sunshine游戏串流完整指南:5分钟搭建你的个人游戏云

Sunshine游戏串流完整指南&#xff1a;5分钟搭建你的个人游戏云 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为无法在客厅大屏上畅玩书房电脑里的3A大作而烦恼吗&#xff1…...