Golang中的for range循环

Golang中可以使用for range遍历数组、切片、字符串、map及通道(channel)。通过for range遍历的返回值有以下规律:

1.数组、切片、字符串返回索引和值

2.map返回键和值

3.通道(channel)只返回通道内的值。

Go语言for range实例

循环数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import "fmt"

func f1() {
var a = [...]int{1, 2, 3}
for i, v := range a {
//i是索引,v是值
fmt.Printf("i: %v\n", i)
fmt.Printf("v: %v\n", v)
}
}

func main() {
f1()
}

运行结果

1
2
3
4
5
6
i: 0
v: 1
i: 1
v: 2
i: 2
v: 3

或者,打印的好看点,可以这样。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func f2() {
var a = [...]int{1, 2, 3}
for i, v := range a {
fmt.Printf("%v,%v ", i, v)
}
}

func main() {
f2()
}

运行结果

1
0,1 1,2 2,3 

再或者不要申明索引,直接用下划线代替,省的必须用这个变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func f3() {
var a = [...]int{1, 2, 3}
for _, v := range a {
fmt.Printf("v: %v\n", v)
}
}

func main() {
f3()
}

运行结果

1
2
3
v: 1
v: 2
v: 3

循环切片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func f4() {
var s = []int{1, 2, 3}
for _, v := range s {
fmt.Printf("v: %v\n", v)
}
}

func main() {
f4()
}

运行结果

1
2
3
v: 1
v: 2
v: 3

循环Map

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import "fmt"

func f5() {
m := make(map[string]string, 0)
m["name"] = "weiyunfeng"
m["age"] = "23"
m["email"] = "[email protected]"
for key, value := range m {
fmt.Printf("%v:%v\n", key, value)
}
}

func main() {
f5()
}

运行结果

1
2
3
name:weiyunfeng
age:23
email:905577137@qq.com

循环字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func f6() {
s := "hello world"
for _, v := range s {
fmt.Printf("v: %c\n", v)
}
}
// %c按照字符输出
func main() {
f6()
}

运行结果

1
2
3
4
5
6
7
8
9
10
11
v: h
v: e
v: l
v: l
v: o
v:
v: w
v: o
v: r
v: l
v: d