Appearance
循环
编程语言特性概览:
Go
go
type Person struct {
Name string
Age int
}
people := []Person{
{"张三", 20},
{"李四", 25},
{"Allen Iverson", 30},
}
// 遍历
for i, p := range people {
fmt.Printf("%d: %s (%d 岁)\n", i, p.Name, p.Age)
}
// for … range
for i, p := range people {
fmt.Println(i, p.Name, p.Age)
}
// 只要对象
for _, p := range people {
fmt.Println(p.Name)
}
// 索引访问
for i := 0; i < len(people); i++ {
fmt.Println(people[i].Name)
}
// 遍历 map
m := map[string]int{"张三": 20, "李四": 30}
for k, v := range m {
fmt.Println(k, v)
}
// while 风格
i := 0
for i < 5 {
fmt.Println(i)
i++
}
// 无限循环
for {
fmt.Println("死循环啦")
}- 大坑:Go 的 for range 会拷贝元素,如果你想在循环里改对象,用指针或索引访问
Python
- 遍历列表
py
weapons = ["AK-47", "M4A1", "AWP"]
for weapon in weapons:
print(f"武器:{weapon}")- 携带下标循环
py
weapons = ["AK-47", "M4A1", "AWP"]
for i, weapon in enumerate(weapons):
print(f"Index={i}, {weapon}")
for i, weapon in enumerate(weapons, start=1):
print(f"Index={i}, {weapon}")- 配合 range
py
for i in range(5):
print(f"第{i}次循环")- 遍历字符串
py
for ch in "Python":
print(ch)Java
java
// for 循环
for (int i = 0; i < 5; i++) {
System.out.println(i);
}- 增强 for
java
List<String> names = List.of("张三", "李四", "Allen Iverson");
for (String name : names) {
System.out.println(name);
}- 迭代器 Iterator
java
List<String> names = new ArrayList<>();
names.add("张三");
names.add("李四");
Iterator<String> it = names.iterator();
while (it.hasNext()) {
String name = it.next();
// 适合遍历中需要删除元素
if (name.equals("李四")) {
it.remove();
}
System.out.println(name);
}- Stream API
java
names.forEach(n -> System.out.println("你好, " + n));C++
TODO
JavaScript
简单循环
容器循环
Bash
- IFS 变量展开
bash
IFS=,
names="A,B,C"
for name in $names; do
echo "Hello, ${name}?"
done- 遍历列表 空格元素
bash
list=("张三" "李四" "Allen Iverson")
for name in "${list[@]}"; do
echo "Hello, ${name}!"
done
for name in ${list[@]}; do
echo "Hello, ${name}!"
done
for name in ${list[*]}; do
echo "Hello, ${name}!"
done
for name in "${list[*]}"; do
echo "Hello, ${name}!"
done- 结合 seq 做数值循环
bash
nums=$(seq 1 5)
for n in $nums; do
echo "Hello, ${n}."
doneLua
TODO
Ruby
TODO