golang学习笔记10-循环结构

注:本人已有C,C++,Python基础,只写本人认为的重点。
go的循环只有for循环,但有多个语法 ,可以实现C/C++中的while和do while。当然,for循环也有break和continue,这点和C/C++相同。
语法1

for 循环变量初始化;循环进行条件;循环变量迭代{

//执行语句

}

例1:

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

例2:

go 复制代码
//字符串遍历方式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 循环进行条件{

//执行语句

}

例:

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

这种情况其实就是C/C++的while,不难看出,把循环条件放循环体末尾就是do while。
语法3

for {

//执行语句

}

上述执行语句如果没有break就是死循环,所以通常要加上break。

例:

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

语法4,for-range

go 复制代码
//字符串遍历方式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才能显示原来的字符。

相关推荐
Learn Beyond Limits6 分钟前
The learning process of Decision Tree Model|决策树模型学习过程
人工智能·深度学习·神经网络·学习·决策树·机器学习·ai
岑梓铭32 分钟前
考研408《计算机组成原理》复习笔记,第六章(1)——总线概念
笔记·考研·408·计算机组成原理·计组
Suckerbin44 分钟前
digitalworld.local: TORMENT
笔记·安全·web安全·网络安全
凯尔萨厮1 小时前
Java学习笔记三(封装)
java·笔记·学习
YoungUpUp2 小时前
【文件快速搜索神器Everything】实用工具强推——文件快速搜索神器Everything详细图文下载安装教程 办公学习必备软件
学习·everything·文件搜索·实用办公软件·everything 工具·文件快速搜索·搜索神器
RaLi和夕2 小时前
单片机学习笔记.C51存储器类型含义及用法
笔记·单片机·学习
星梦清河2 小时前
宋红康 JVM 笔记 Day15|垃圾回收相关算法
jvm·笔记·算法
武文斌772 小时前
ARM工作模式、汇编学习
汇编·嵌入式硬件·学习·arm
岑梓铭3 小时前
计算机网络第四章(4)——网络层《ARP协议》
网络·笔记·tcp/ip·计算机网络·考研·408
lingggggaaaa3 小时前
小迪安全v2023学习笔记(八十讲)—— 中间件安全&WPS分析&Weblogic&Jenkins&Jetty&CVE
笔记·学习·安全·web安全·网络安全·中间件·wps