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

golang学习笔记10-循环结构

注:本人已有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.kler.cn/a/317653.html

相关文章:

  • 1111111111待修改--大流量分析(三)-BUUCTF
  • Jetpack 之 Ink API初探
  • neo4j desktop基本入门
  • SpringCloud学习笔记
  • [前端]NodeJS常见面试题目
  • mongoDB的安装及使用
  • 黎巴嫩通信设备连环爆炸之谜——网络+供应链攻击
  • 单元测试和unittest框架(超详细总结)
  • ubuntu配置libtorch CPU版本
  • 基本定时器的预分频器和技术周期的计算
  • STM32与51单片机的区别:是否应该直接学习STM32?
  • 推荐一款开源的Redis桌面客户端
  • uniapp打字效果流式输出
  • 【machine learning-13-线性回归的向量化】
  • AUTOSAR_EXP_ARAComAPI的5章笔记(11)
  • ubuntu中Python解释器位置
  • C++性能分析easy_profiler
  • IntelliJ IDEA 2024.1.4 (Ultimate Edition)找不到Add Framework Support解决方法
  • Python爬虫之requests模块(一)
  • 全栈开发(三):springBoot3中使用mybatis-plus
  • 二分查找算法(4) _搜索插入位置
  • maxwell 输出消息到 redis
  • 【计算机基础】用bat命令将Unity导出PC包转成单个exe可执行文件
  • SQL面试常见题目
  • [uni-app]小兔鲜-01项目起步
  • Spring Boot 学习之路 -- 配置项目