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 { 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 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 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() }
|
运行结果
循环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) } }
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
|