for循环

2022-02-06 GoLang 大约 2 分钟

for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的"步进",即执行迭代因子。

# 语法

for (初始表达式; 布尔表达式; 迭代因子) {
	循环体
}
1
2
3
  • 初始化部分设置循环变量的初值。
  • 条件判断部分为任意布尔表达式。
  • 迭代因子控制循环变量的增减。
package main

import "fmt"

func main() {
	var sum int = 0
	for i := 0; i <= 5; i++ {
		sum += i
	}
	fmt.Println(sum) // 15
}
1
2
3
4
5
6
7
8
9
10
11

相关信息

for 的初始化表达式 不能用var定义变量的形式,要用 :=

# 细节

  1. for 后面可以直接跟判断条件

    package main
    
    import "fmt"
    
    func main() {
    	i := 0
    	for i <= 5 {
    		i++
    	}
    	fmt.Println(i) // 6
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  2. 死循环

    func main() {
    	for {
    		fmt.Println("死循环了")
    	}
    }
    // 或
    func main() {
    	for ;; {
    		fmt.Println("死循环了")
    	}
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  3. 遍历字符串

    package main
    
    import "fmt"
    
    func main() {
    	var str string = "hello golang你好"
    	for i := 0; i < len(str); i++ {
    		fmt.Printf("%c \n", str[i])
    	}
    }
    // 打印结果
    h
    e 
    l 
    l 
    o 
      
    g 
    o 
    l 
    a 
    n 
    g 
    ä 
    ½ 
      
    å 
    ¥ 
    ½ 
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29

    你好这两个汉字,会出现乱码,所以建议使用for range循环。

# 标签

for循环可以使用标签来中断循环体

func main() {
	lable2:
	for i := 1; i < 5; i++ {
		for j := 1; j < 4; j++ {
			fmt.Println(i, j)
			break lable2
		}
	}
}
1
2
3
4
5
6
7
8
9

可以通过加标签来中断外层for循环。

# for range

for range结构是go语言特有的一种迭代结构,在许多情况下都非常有用,for range 可以遍历数组、切片、字符串、map及通道、for range语法上类似于其它语言中的foreach语句。

语法:

for key, val := range coll {
	// 循环体
}
1
2
3
package main

import "fmt"

func main() {
	var str string = "hello golang你好"
	for i, value := range str {
		fmt.Printf("索引为:%d,具体的值为: %c \n", i, value)
	}
}
// 打印结果
索引为:0,具体的值为: h
索引为:1,具体的值为: e   
索引为:2,具体的值为: l   
索引为:3,具体的值为: l   
索引为:4,具体的值为: o   
索引为:5,具体的值为:     
索引为:6,具体的值为: g   
索引为:7,具体的值为: o   
索引为:8,具体的值为: l   
索引为:9,具体的值为: a   
索引为:10,具体的值为: n  
索引为:11,具体的值为: g  
索引为:12,具体的值为: 你 
索引为:15,具体的值为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

因为一个汉字占3个字节,所以索引12后面是15。

上次编辑于: 2023年7月4日 09:36