02-for循环

@

1. C语言风格

1.1 语法

for 赋值;控制条件;增减 { }

1.2 示例

  • 代码
package main
import "fmt"
var j int = 0
func main() {
  for i:=0;i<100;i++ {
    j = j + i
  }
  fmt.Println(j) 
}
  • 输出
# go run sum.go
5050

2. 比较

2.1 语法

for控制条件{ }

2.2 示例

  • 代码
package main
import "fmt"
var i, j = 0, 0
func main() {
  for i <= 100 {
    j = j + i
    i++
  }
  fmt.Println(j)
}
  • 输出
# go run sum.go
5050

3. 无限循环

for true { }

4. Range

4.1 数组和切片的范围

1)示例:用range求数组或切片的和

package main
import "fmt"
func main() {
	nums := []int{2, 3, 4}
	sum := 0
	for _, num := range nums {
		sum += num
	}
}

说明:
给名为nums的range传如两个变量——index和值。
但是不需要使用该元素的index,因此用空白符“_”代替(如果写成变量,但是main中没有引用就报错了)

输出

sum: 9

2)打印数组的index

package main

import "fmt"

func main() {
	nums := []int{2, 3, 4}
	for i, num := range nums {
		if num == 3 {
			fmt.Println("index:", i)
		}
	}
}

结果

index: 1

4.2 map 上的应用

  • 代码
package main
import "fmt"
func main() {
	kvs := map[string]string{"a": "apple", "b": "banana"}
	for k, v := range kvs {
		fmt.Printf("%s -> %s\n", k, v)
	}
}

  • 输出结果
a -> apple
b -> banana

4.3 枚举Unicode字符串

  • 代码
package main
import "fmt"
func main() {
	for i, c := range "wei" {
		fmt.Println(i, c)
	}
}

  • 输出
0 119
1 101
2 105

5. 循环控制

5.1 continue

1)作用:跳过本次循环之后的部分,继续循环

2)示例

脚本:

package main
import "fmt"
func main() {
   for a := 1 ;a <= 10; a++ {
      if a == 8 {
         continue;
      }
      fmt.Printf("a 的值为 : %d\n", a);
   }
}

说明:a==8 时,跳过了本次循环之后的打印值的部分。

执行

a 的值为 : 1
a 的值为 : 2
a 的值为 : 3
a 的值为 : 4
a 的值为 : 5
a 的值为 : 6
a 的值为 : 7
a 的值为 : 8
a 的值为 : 9
a 的值为 : 10

5.2 break

1)作用:跳出循环

2)示例 循环switch 开关

代码:

package main

import "fmt"

func main() {
   var a int = 10
   for a < 20 {
      fmt.Printf("a 的值为 : %d\n", a);
      a++;
      if a > 15 {
         break;
      }
   }
}

输出结果:

a 的值为 : 10
a 的值为 : 11
a 的值为 : 12
a 的值为 : 13
a 的值为 : 14
a 的值为 : 15

说明:到if条件的时候执行break 跳出了for循环。

5.3 goto

1)作用:
代码

package main
import "fmt"
func main() {
var i int = 1
fmt.Println("wait 1 ")
LOOP: fmt.Println("wait 2 ")
fmt.Println("wait 3 ")
   for i < 10 {
      i++
      if i == 8 {
         goto LOOP
      }
      fmt.Printf("i 的值为 : %d\n", i);
   }
}

说明: 当i==8 时 跳过本次循环后边的打印。回到脚本前边LOOP的位置,继续打印wait 2 ,wait 3

执行结果

image.png


posted on 2021-11-21 00:00  运维开发玄德公  阅读(4)  评论(0编辑  收藏  举报  来源

导航