5.3 for 语句
优质
小牛编辑
138浏览
2023-12-01
for语句
记得刚参加工作的时候,使用的语言主要是VB和Delphi,那个时候我大量使用 do while这种循环。后来主要使用PHP和Python,越来越多的使用for语句,甚至几乎不用while语句。现在,感觉其实while语句不是必须的,Go语言就没有while这种循环结构。要想在Go语言中执行循环语句只有for这一个结构。
一个for里面是一个代码块。
for循环体的几种写法:
for{
//死循环相当于 while(1){}
}
for i<10{
i +=1
}
for i := 0; i < 10; i++ {
//看这个是不是很像C语言了?
}
//重磅推荐下面的写法,相当于很多语言里面的foreach
//for range 结构
sunnyMap := map[string]int{"Mon": 0, "Tue": 1, "Wed": 2, "Thu": 3, "Fri": 4, "Sat": 5, "Sun": 6}
for key, value := range sunnyMap {
fmt.Printf("%d->%s\r\n", key, value)
}
跳出循环使用break
sunnyMap := map[string]int{"Mon": 0, "Tue": 1, "Wed": 2, "Thu": 3, "Fri": 4, "Sat": 5, "Sun": 6}
for key, value := range sunnyMap {
if key=="Thu"{
break
}
fmt.Printf("%d->%s\r\n", key, value)
}
关键字 continue 忽略剩余的循环体而直接进入下一次循环的过程,但不是无条件执行下一次循环,执行之前依旧需要满足循环的判断条件。
sunnyMap := map[string]int{"Mon": 0, "Tue": 1, "Wed": 2, "Thu": 3, "Fri": 4, "Sat": 5, "Sun": 6}
for key, value := range sunnyMap {
if key=="Thu"{
continue
}
fmt.Printf("%d->%s\r\n", key, value)
}
大家注意对map进行遍历的时候尽量使用for range这中结构,因为map结构不是有序的。
用Go来解决经典数学问题——完数
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3.
编程找出 10000 以内的所有完数。
例如:
6=1+2+3
28=1+2+3+...+6+7
496=1+2+3+...+30+31
8128=1+2+3…+126+127
package main
import (
"fmt"
)
func main() {
for i := 1; i < 10000; i++ {
sum := 0
for j := 1; j < i; j++ {
if i%j == 0 {
sum += j
}
}
if i == sum {
fmt.Println(i)
}
}
}