- 快速入门
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
-
流程图
for循环注意事项和细节
1、循环条件是返回一个布尔值的表达式
2、 for 循环的第二种使用方式
for 循环判断条件 { //循环执行语句
}
//将变量初始化和变量迭代写到其它位置
示例:
j := 1
for j <= 10 {
fmt.Println("hello....", j)
j++
}
3、 for 循环的第三种使用方式
for {
//循环语句
}
等价:
for ; ; { }
是个无限循环,需要配合break
语句来用
示例:
k := 1
for { //等价 for ; ; { }
if k <= 10 {
fmt.Println("ok...", k)
} else {
break //跳出循环
}
k++
}
3、Golang 供 for-range
的方式,可以方便遍历字符串和数组
(注: 数组的遍历,我们放到讲数组 的时候再讲解) ,案例说明如何遍历字符串。
- 字符串遍历方式 1-传统方式
var str string = "hello,steven qin"
for i := 0; i < len(str); i++ {
fmt.Printf("%c \n", str[i])
}
-
for-range
方式
var str string = "abc~defg"
for index, val := range str {
fmt.Printf("index=%d , val=%c \n", index, val)
}
细节讨论
1、 如果我们的字符串含有中文
,那么传统的遍历字符串方式,就是错误,会出现乱码。原因是传统的对字符串的遍历是按照字节来遍历,而一个汉字在 utf8 编码是对应 3 个字节
。
- 如何解决 需要要将
str
转成[]rune
切片.=> 体验一把
var str string = "hello,steven qin!哈哈"
str2 := []rune(str) //转为切片类型
for i := 0; i < len(str2); i++ {
fmt.Printf("%c \n", str2[i])
}
2、 for-range方法不受影响
var str string = "abc~defg,哈哈"
for index, val := range str {
fmt.Printf("index=%d , val=%c \n", index, val)
}
练习
1、打印 1~100 之间所有是 9 的倍数的整数的个数及总和
func main() {
var max uint64 = 100
var count uint64 = 0
var sum uint64 = 0
var i uint64 = 1 //i的类型要和max一致
for ; i <= max; i++ {
if i%9 == 0 {
count++
sum += i
}
}
fmt.Printf("count=%v sum=%v\n", count, sum) //%v为值的默认格式表示
}
2、练习2
var n int = 10
for i := 0; i <= n; i++ {
fmt.Printf("%v + %v = %v\n", i, n-i, n)
}
有疑问加站长微信联系(非本文作者)