「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」
写在前面👀
今天主要聊聊循环语句🍕
一、for循环语句🍔
在Go语言中,虽然循环语句只有for语句,没有while语句,但也是够用了🍟
1.无条件的for循环🧂
- 语法👇
1 | go复制代码for{ //类似 while true{} |
- 示例👇
工作使我幸福😵
1 | go复制代码package main |
- 结果👇
刚开始还被360检测成木马了😂
2.只有条件语句的for循环🥓
- 语法👇
1 | go复制代码for 条件语句 { //类似while(条件语句){} |
- 示例👇
反向输出字符串🎗
1 | go复制代码package main |
- 结果👇
3.常规的for循环🥚
- 语法👇
1 | go复制代码for 初始语句;条件语句;结束语句{ |
- 示例👇
倒计时⏱
1 | go复制代码package main |
- 结果👇
二、for range循环语句🍳
for 循环的 range 格式可以可以遍历数组、字符串、切片(slice)映射(map) 及通道(channel)等
- 语法👇
1 | go复制代码for key, value := range object { |
类型 | 索引 | 值 | 编码 |
---|---|---|---|
string | index | s[index] | unicode, rune |
array/slice | index | s[index] | |
map | key | m[key] | |
channel | element |
- 首先提一个问题:如果使用 for 循环迭代一个 Unicode 编码的字符串,会发生什么?
示例👇
1 | go复制代码package main |
- 结果👇
结果就很离谱,是一堆乱码,该怎么办呢?我们可以用for fange变绿字符串
1. 用for range遍历字符串🧇
ASCII 编码的字符占用 1 个字节,既每个索引都指向不同的字符,而非 ASCII 编码的字符(占有 2 到 4 个字节)不能单纯地使用索引来判断是否为同一个字符
range 对应字符串遍历比较特殊,value 会对应一个 rune(int32) 类型;而不是一个 byte。
每个 rune 字符和索引在 for-range 循环中是一一对应的。它能够自动根据 UTF-8 规则识别 Unicode 编码的字符。rune 类型是 4byte,因此他有足够的长度表示中文字符(3byte)
- 示例👇
1 | go复制代码package main |
- 结果👇
2.用for range 遍历map
- 示例👇
1 | go复制代码package main |
- 结果👇
3.在for range中使用匿名变量🥞
如果在 for range
遍历中只想获取下标索引,或者是值可以用匿名变量 _
占位符,它既不会分配内存,也不会占用变量名,可以通过匿名变量接受键 key,也可以接受值 value
- 示例👇
比如我只想取出姓名,那就可以用匿名变量接受学号
1 | go复制代码package main |
- 结果👇
写在后面
感谢观看✨
如有不足,欢迎指出💖
今天本来想把跳转语句也写完了,但宿舍突然断电,黑灯瞎火看不清键盘😣
本文转载自: 掘金