基本语法

  1. package main
  2. func main(){
  3. for 初始化条件; 判断条件; 条件变化{
  4. 语句块
  5. }
  6. }

示例1:

计算1-10的和

  1. package main
  2. import "fmt"
  3. func main(){
  4. sum := 0
  5. for i := 1 ; i<1; i++{
  6. sum = sum + i
  7. }
  8. fmt.PrintLn(sum)
  9. }
  10. //55

示例2:

遍历字符串中的每一次个字符

  1. package main
  2. import "fmt"
  3. func main() {
  4. str :="abc"
  5. for i := 0 ; i<len(str);i++{
  6. fmt.Printf("%c\n",str[i])
  7. }
  8. }
  9. //a,b,c

示例3:

嵌套使用

  1. package main
  2. import "fmt"
  3. func main() {
  4. for i := 0; i < 3; i++ {
  5. for j := 0; j < 3; j++ {
  6. fmt.Println(i,j)
  7. }
  8. }
  9. }
  10. //00,01,02,10,11,12,20,21,22

百钱百鸡问题

公鸡5钱一只,母鸡3钱一只,小鸡1钱三只
要求:买100鸡,正好花100钱

枚举法

  1. package main
  2. import "fmt"
  3. func main(){
  4. var price int
  5. //循环遍历,计算价格和个数
  6. for cock := 0; cock <= 100; cock++{
  7. for hen := 0; hen <= 100; hen++{
  8. for chicken := 0; chicken <= 100; chicken += 3{
  9. price = cock*5 + hen*3 + chicken/3
  10. //如果符合条件输出
  11. if price == 100 && cock + hen + chicken == 100{
  12. fmt.Println(cock,hen,chicken)
  13. }
  14. }
  15. }
  16. }
  17. }
  18. /*
  19. 结果:
  20. 0 25 75
  21. 4 18 78
  22. 8 11 81
  23. 12 4 84
  24. */

以上,我们用穷举法,计算出了这个问题的解,当然,就解决“百钱百鸡”问题,这个算法还有很大的优化空间。在这个计算中,大部分计算,都是无效的。我们可以通过限定范围,减少程序的运行次数。
例如:
cock不可能大于20
hen不可能大于34
……

注意问题

for后可不加判断语句,进入死循环:

  1. //死循环,一直打印i的值
  2. package main
  3. import "fmt"
  4. func main(){
  5. var i int = 0
  6. for{
  7. fmt.Println(i)
  8. i++
  9. }
  10. }