小白教程
所有教程
关于
Search
172.70.130.98
172.70.130.98
参数设置
贡献
退出
操作
编辑
移动
保护
信息
历史
删除
查看“Go for loop”的源代码
本页内容
下一节:
Go_nested_loops
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{DISPLAYTITLE:for 循环}}[[Category:go loops|1]] = Go 语言 for 循环 = [[go loops|Go 语言循环语句]] for 循环是一个循环控制结构,可以执行指定次数的循环。 === 语法 === Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。 和 C 语言的 for 一样: <pre>for init; condition; post { } </pre> 和 C 的 while 一样: <pre>for condition { } </pre> 和 C 的 for(;;) 一样: <pre>for { } </pre> * init: 一般为赋值表达式,给控制变量赋初值; * condition: 关系表达式或逻辑表达式,循环控制条件; * post: 一般为赋值表达式,给控制变量增量或减量。 for语句执行过程如下: * 1、先对表达式 1 赋初值; * 2、判别赋值表达式 init 是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行 post,进入第二次循环,再判别 condition;否则判断 condition 的值为假,不满足条件,就终止for循环,执行循环体外语句。 for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下: <pre>for key, value := range oldMap { newMap[key] = value } </pre> 以上代码中的 key 和 value 是可以省略。 如果只想读取 key,格式如下: <pre>for key := range oldMap</pre> 或者这样: for key, _ := range oldMap 如果只想读取 value,格式如下: <pre>for _, value := range oldMap</pre> for 语句语法流程如下图所示: == 计算 1 到 10 的数字之和: <sample title="" desc="" lang="go" hererun="1"> package main import "fmt" func main() { sum := 0 for i := 0; i <= 10; i++ { sum += i } fmt.Println(sum) } </sample> 输出结果为: <pre>55</pre> init 和 post 参数是可选的,我们可以直接省略它,类似 While 语句。 以下实例在 sum 小于 10 的时候计算 sum 自相加后的值: <sample title="" desc="" lang="go" hererun="1"> package main import "fmt" func main() { sum := 1 for ; sum <= 10; { sum += sum } fmt.Println(sum) // 这样写也可以,更像 While 语句形式 for sum <= 10{ sum += sum } fmt.Println(sum) } </sample> 输出结果为: <pre> 16 16 </pre> 无限循环: <sample title="" desc="" lang="go" hererun="1"> package main import "fmt" func main() { sum := 0 for { sum++ // 无限循环下去 } fmt.Println(sum) // 无法输出 } </sample> 要停止无限循环,可以在命令窗口按下ctrl-c 。 '''For-each range 循环''' 这种格式的循环可以对字符串、数组、切片等进行迭代输出元素。 <sample title="" desc="" lang="go" hererun="1"> package main import "fmt" func main() { strings := []string{"google", "xiaobai"} for i, s := range strings { fmt.Println(i, s) } numbers := [6]int{1, 2, 3, 5} for i,x:= range numbers { fmt.Printf("第 %d 位 x 的值 = %d\n", i,x) } } </sample> 以上实例运行输出结果为: <pre>0 google 1 xiaobai 第 0 位 x 的值 = 1 第 1 位 x 的值 = 2 第 2 位 x 的值 = 3 第 3 位 x 的值 = 5 第 4 位 x 的值 = 0 第 5 位 x 的值 = 0 </pre> for 循环的 range 格式可以省略 key 和 value,如下实例: <sample title="" desc="" lang="go" hererun="1"> package main import "fmt" func main() { map1 := make(map[int]float32) map1[1] = 1.0 map1[2] = 2.0 map1[3] = 3.0 map1[4] = 4.0 // 读取 key 和 value for key, value := range map1 { fmt.Printf("key is: %d - value is: %f\n", key, value) } // 读取 key for key := range map1 { fmt.Printf("key is: %d\n", key) } // 读取 value for _, value := range map1 { fmt.Printf("value is: %f\n", value) } } </sample> 以上实例运行输出结果为: <pre>key is: 4 - value is: 4.000000 key is: 1 - value is: 1.000000 key is: 2 - value is: 2.000000 key is: 3 - value is: 3.000000 key is: 1 key is: 2 key is: 3 key is: 4 value is: 1.000000 value is: 2.000000 value is: 3.000000 value is: 4.000000 </pre> [[go loops|Go 语言循环语句]]
返回至“
Go for loop
”。
下一节:
Go_nested_loops