1. 基本介绍
让一段代码循环的执行。
2. 一个实际的需求
编写一个程序,可以打印10句
“你好,harry”。可以怎么做
package main
import(
"fmt"
)
func main() {
// 输出10句:你好,尚硅谷
for i :=1;i <= 10;i++ {
fmt.Println("你好,尚硅谷")
}
}
2. for循环的基本语法
3. for循环执行流程分析
for循环的流程图
4. for循环的使用注意事项和细节讨论
1)循环条件是返回一个布尔值的表达式
2)for循环的第二种使用方式
for 循环判断条件 {
循环执行语句
}
j := 1
for j<=10 {
fmt.Println("你好,尚硅谷~",j)
j++ // 循环变量迭代
}
3)for循环的第三种使用方式
for {
循环执行语句
}
上面的写法等价 for;; {} 是一个无限循环,通常要配合break语句使用
4)Golang提供for-range的方式,可以方便遍历字符串和数组(注:数组的遍历,我们放到讲数组的时候再讲解),案例说明如何遍历字符串
package main
import (
"fmt"
)
func main() {
var str string = "hello,world"
// 字符串遍历方式1-传统方式
for i := 0;i < len(str); i++ {
fmt.Printf("%c \n",str[i]) // 使用到下标...
}
// 字符串遍历方式2-for-range
str = "abc-ok"
for index,val := range str {
fmt.Printf("index=%d,val=%c \n",index,val)
}
}
5)字符串遍历的细节讨论
如果我们的字符串含有中文,那么传统的遍历字符串方式,就是错误的,会出现乱码。原因是传统的对字符串的遍历是按照字节来遍历的,而一个汉字在utf8编码是对应3个字节。
如何解决 需要将 str转成 []rune切片. =》 体验一把
package main
import (
"fmt"
)
func main() {
// 该方式遍历带有中文的字符串,会出现乱码。原因是传统的对字符串的遍历是按照字节来遍历的,而一个汉字在utf8编码对应3个字节
// 可以先将str转成[]rune切片再遍历
var str string = "hello,world!北京"
str2 := []rune(str) // 把str 转成 []rune
for i :=0; i<len(str2);i++ {
fmt.Printf("%c \n",str2[i])
}
// 对应for-range遍历方式而言,是按照字符串方式遍历。因此如果字符串有中文,也是ok
str3 := "abck-ok-上海"
for index,value := range str3 {
fmt.Printf("index=%d value=%c \n",index,value)
}
}
6)练习题
package main
import (
"fmt"
)
func main() {
// 1)打印1-100之间所有是9的倍数的整数的个数及总和
var count int = 0
var sum int = 0
for i :=1;i <= 100; i++ {
if (i % 9 == 0) {
sum = sum + i
count++
}
}
fmt.Printf("9的倍数的个数为%d,9的倍数的数字的总和为%d",count,sum)
}