常见的for使用场景
【摘要】 1 简介 探索意味着有一个目标,发现却意味着目光自由,胸怀坦然,没有目标。 --黑塞 2 语言框架现代软件工程承认应用范围广泛的形式化方法,以帮助确保系统在某些特定方面正确运行 隐式或明确地表明其期望的行为。类型系列的一端是强大的框架,例如 数理逻辑、代数规范语言、模态逻辑和指称语义。这些可以用来表达非常普遍的正确性属性,但通常使用起来很麻烦并要求程序员有大量的复杂性。...
1 简介
探索意味着有一个目标,发现却意味着目光自由,胸怀坦然,没有目标。
--黑塞
循环的含义是只要条件为 true,就会一遍又一遍地运行相同的代码。
比如可以模拟使用循环掷骰子,直到结果为 6,计算掷骰子的次数。
当我们知道代码应该运行多少次时,最好使用 for,而我们可以用 for 做的最基本的事情是计数。
为了进行计数,for循环使用 counting 变量来跟踪代码运行的次数。
for循环中的 count 变量设置如下:
起始值。
Condition 使用 count 变量,则只要条件为 true,for 循环就会运行。
描述每次循环运行时 count 变量应如何更改。
3 go语言中的使用场景
-
初始化条件的循环
for i := 0; i <= 100; i++ { fmt.Println(i) }
-
嵌套循环的场景
for i := 0; i < 5; i++ { for j := 0; j < 5; j++ { fmt.Println(i, " - ", j, "=", i-j) } }
-
循环止于某个条件
i := 0 for i < 10 { fmt.Println(i) i++ }
-
没有条件的循环
如何没有任何条件的循环,将会持续直到该当前进程退出。
i := 0
for {
fmt.Println(i)
i++
}
-
循环与break条件的配合
i := 0 for { fmt.Println(i) if i >= 10 { break } i++ }
-
循环与 continue 条件组合使用
i := 0 for { i++ if i%2 == 0 { continue } fmt.Println(i) if i >= 50 { break } }
-
在切片中使用循环遍历序号和数据
与python的使用方法类似,range 将会返回切片中的元素的序号的数据。 小心这里的问题
type Item struct {
Name string
}
func main() {
var all = []*Item{}
var Items = []Item{Item{Name: "Jack"}, Item{Name: "Lucy"}}
for _, item := range Items {
// item := item
all = append(all, &item)
}
fmt.Printf("items:%#v\n", Items)
for ind, it := range all {
fmt.Printf("ind:%#v it:%#v\n", ind, it)
}
}
4 语义for循环迭代变换问题
var all []*Item
for _, item := range items {
all = append(all, &item)
}
这段代码有一个错误。此循环执行后,all包含len(items)相同的指针,每个指针指向相同的Item,保存迭代的最后一个值。
发生这种情况是因为 item 变量是每个循环,而不是每个迭代:&item在每次迭代中都是相同的,并且在每次迭代中都会item被覆盖。通常的解决方法是这样写:
var all []*Item
for _, item := range items {
item := item
all = append(all, &item)
}
for each 的迭代参数不能即使更新的问题
https://github.com/golang/go/discussions/56010
5 小结
For 循环是编程中使用最广泛的循环之一,用于重复执行一组语句。我们可以使用 for 循环来迭代一系列元素,执行一组固定次数的任务。在本文中,我们将了解 For 循环的基础知识、语法以及在不同编程语言中的用法。
与其他常见循环类型(包括 while 循环和 do-while 循环)之间的比较表:
特征 For 循环 While 循环 Do-While 循环
初始化 初始化循环控制变量 需要显式初始化 需要显式初始化
条件 指定循环终止条件 在每次迭代之前检查条件 在每次迭代后检查条件
增量/递减 更新循环控制变量 需要在循环体中显式更新 需要在循环体中显式更新
语法复杂性 更简洁所有组件都在一条线上 需要单独的初始化和检查 需要单独的初始化和检查
迭代灵活性 非常适合固定迭代次数 灵活适用于不同的回路条件 灵活适用于不同的回路条件
用法 通常用于对某个范围进行迭代 当循环条件未知时很有用 当循环条件未知时很有用
无限循环 可以通过省略条件来创建 需要显式条件设置 需要显式条件设置
例子 for (int i = 0; i < 5; i++) {...} while (condition) {...} do {...} while (condition);
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)