golang学习笔记10-循环结构

ops/2024/9/24 10:21:33/

注:本人已有C,C++,Python基础,只写本人认为的重点。
go的循环只有for循环,但有多个语法,可以实现C/C++中的while和do while。当然,for循环也有break和continue,这点和C/C++相同。
语法1
for 循环变量初始化;循环进行条件;循环变量迭代{
//执行语句
}
例1:

for i := 1; i <= 10; i++ {fmt.Println("hello,world", i)
}

例2:

//字符串遍历方式1-传统方式
var str string = "hello,world!北京"
str2 := []rune(str)
for i := 0; i < len(str2); i++ {fmt.Printf("%c \n", str2[i]) //使用到下标...
}

注意go的字符串是以字节形式存储的,当存在一个字节表示不了的字符时,要转成rune切片,所以这里的str2已经是rune切片了。
len是统计变量的容量,源码中有说明,不做赘述。

语法2
for 循环进行条件{
//执行语句
}
例:

j := 1        //循环变量初始化
for j <= 10 { //循环条件fmt.Println("hello,world", j)j++ //循环变量迭代
}

这种情况其实就是C/C++的while,不难看出,把循环条件放循环体末尾就是do while。
语法3
for {
//执行语句
}
上述执行语句如果没有break就是死循环,所以通常要加上break。
例:

k := 1
for { // 这里也等价 for ; ; {if k <= 10 {fmt.Println("ok~~", k)} else {break //break就是跳出这个for循环}k++
}

语法4,for-range

//字符串遍历方式2-for-range
str = "abc~ok上海"
for index, val := range str {fmt.Printf("index=%d, val=%c \n", index, val)
}

显然,for range可以直接遍历UTF-8字符串,因为它会将字符串视作Unicode码点(rune)进行遍历,即:在每次迭代时,for range 会从字符串中提取一个完整的Unicode字符(即一个 rune),同时返回字符的索引和对应的Unicode值,所以我们还需要使用%c才能显示原来的字符。


http://www.ppmy.cn/ops/115236.html

相关文章

WPF 自定义路由事件

WPF 自定义路由事件 一、自定义路由事件步骤 ① 注册路由事件    ② 为路由事件添加 CLR 事件包装器    ③ 创建可激发路由事件的方法 二、注册路由事件 EventManager.RegisterRoutedEvent(String, RoutingStrategy, Type, Type)     作用&#xff1a;将新的路由事件…

AOP实现自动化日志记录,并将日志记录到es中

在实际开发当中&#xff0c;日志记录是非常有必要的。将日志记录和业务逻辑解耦&#xff0c;可以引入日志框架&#xff08;如 SLF4J Logback&#xff09;并结合 AOP 实现自动化日志记录。 引入依赖 <dependency><groupId>org.slf4j</groupId><artifactI…

基于单片机与 PC 机通信的数据采集控制系统设计

摘 要 : 设计出基于单片机与 PC 机通信的数据采集控制系统方法 。 被控对象经传感器 、 电压变换电路 、 A/D 转换芯片与单片机相连, 可将现场参数信息传送至单片机 ; 单片机经继电器驱动控制被控对象运行 。 单片机与 PC 机经电平转换芯片相连, 实现远程通信功能 。…

(自用复习题)常微分方程01

题目来源 常微分方程(第四版) (王高雄,周之铭,朱思铭,王寿松) 高等教育出版社 书中习题1.2 5.求下列两个微分方程的公共解 y ′ y 2 2 x − x 4 , y ′ 2 x x 2 x 4 − y − y 2 yy^22x-x^4,y2xx^2x^4-y-y^2 y′y22x−x4,y′2xx2x4−y−y2 两方程的公共解满足 y 2 2 x…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 7 推送卡片刷新消息

场景介绍 如今衣食住行娱乐影音应用占据了大多数人的手机&#xff0c;一部手机可以满足日常大多需求&#xff0c;但对需要经常查看或进行简单操作的应用来说&#xff0c;总需要用户点开应用体验较繁琐。针对此种场景&#xff0c;HarmonyOS提供了Form Kit&#xff08;卡片开发服…

MATLAB中的无线通信系统测试和验证方法有哪些

在MATLAB中&#xff0c;无线通信系统的测试和验证是一个全面的过程&#xff0c;它涉及到信号处理、调制与解调、信道建模、误码率分析以及无线通信标准的实现。以下是一些关键的测试和验证方法&#xff1a; 信道建模&#xff1a;为了模拟真实的通信环境&#xff0c;MATLAB提供了…

C++之STL—string容器

本质&#xff1a;类 class 封装了很多方法&#xff1a;查找find&#xff0c;拷贝copy&#xff0c;删除delete 替换replace&#xff0c;插入insert 构造函数 赋值操作 assign&#xff1a; 字符串拼接 &#xff0b; append&#xff1a; string查找和替换 没查找到&#xff0c;po…

CCRC-DSA数据安全评估师:数据安全架构是什么?

架构不仅是抽象的概念&#xff0c;更是项目规划、系统开发、产品部署和安全增强中必不可少的思维模式、沟通桥梁和共享语言。 简言之&#xff0c;它定义了系统中包含的元素及其相互关系&#xff0c;这些元素被称为组件或逻辑模块。 例如&#xff0c;“组件”指独立存在的基础…