浏览 1107
扫码
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+328=1+2+3+...+6+7496=1+2+3+...+30+318128=1+2+3…+126+127
package mainimport ("fmt")func main() {for i := 1; i < 10000; i++ {sum := 0for j := 1; j < i; j++ {if i%j == 0 {sum += j}}if i == sum {fmt.Println(i)}}}