1 // 常规for循环的三种使用方式 2 // 方式一 3 for a := 1; a <=10; a++ { 4 fmt.Println(a) 5 } 6 7 // 方式二 8 var b uint8 = 0 9 for b < 10 { 10 fmt.Println(b) 11 b++ 12 } 13 14 // 方式三 15 var c uint8 = 0 16 for { 17 if c < 10 { 18 fmt.Println(c) 19 } else { 20 break 21 } 22 c++ 23 }
for-range
语句为
for 下标变量index, 每行内容row := range 目标待循环变量 {
// 下标值 index
// 每行内容变量row
}
1 // for-range循环的使用 2 // 当循环一个字符串时,常规for循环只能循环字串的字节,如下 3 str := "hello,你好" 4 for i := 0; i < len(str); i++ { 5 fmt.Printf("%d - %c \n", i, str[i]) 6 } 7 // 因为golang为默认为utf8编码,str字串的最后两个中文字各占三个字节,所以被便利循环为6个字节,且为乱码 8 /* 9 0 - h 10 1 - e 11 2 - l 12 3 - l 13 4 - o 14 5 - , 15 6 - ä 16 7 - ½ 17 8 - 18 9 - å 19 10 - ¥ 20 11 - ½ 21 */ 22 23 // 但当使用for-range循环时,效果如下 24 for index, val := range str { 25 fmt.Printf("%d - %c \n", index, val) 26 } 27 // str的长度没变还是12的字节,但是for-range会自动识别三个字节为一个汉字 28 /* 29 0 - h 30 1 - e 31 2 - l 32 3 - l 33 4 - o 34 5 - , 35 6 - 你 36 9 - 好 37 */
练习题
1 // 练习题1 2 // 打印1~100间所有9的倍数的整数个数及他们之和 3 var sum int 4 var total uint8 5 for n := 1; n <= 100; n++ { 6 if n % 9 == 0 { 7 total++ 8 sum += n 9 } 10 } 11 fmt.Printf("1~100之间9的倍数共有 %d 个,他们之和为 %d \n", total, sum) 12 // 1~100之间9的倍数共有 11 个,他们之和为 594
1 // 练习题2 2 // 选定一个整数interge, 输出所有两个整数值之和等于integer的算式 3 // 即,如interge为2,其输出结果如下: 4 // 0+2=2 5 // 1+1=2 6 // 1+0=2 7 var interge int 8 fmt.Printf("请输入一个任意正整数:") 9 fmt.Scanln(&interge) 10 11 for m := 0; m <= interge; m++ { 12 fmt.Printf("%d + %d = %d \n", m, interge - m, interge) 13 } 14 15 /* 16 请输入一个任意正整数:8 17 0 + 8 = 8 18 1 + 7 = 8 19 2 + 6 = 8 20 3 + 5 = 8 21 4 + 4 = 8 22 5 + 3 = 8 23 6 + 2 = 8 24 7 + 1 = 8 25 8 + 0 = 8 26 */