Skip to content

Latest commit

 

History

History
91 lines (73 loc) · 2.31 KB

05.3.md

File metadata and controls

91 lines (73 loc) · 2.31 KB

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)
		}
	}
}

链接