2022/01/02
1、for循环基本语法
for循环的循环条件是一个返回布尔值的表达式
(1)
for 循环变量初始化; 循环条件; 循环变量迭代 {
//循环执行语句
}
(2)
for 循环判断条件 {
//循环执行语句
}
Demo:
j := 1
for j <= 10 {
fmt.Println("hello, world!")
j++
}
(3)
for {
//循环执行语句
}
//这个写法等价于 for ; ; {}
(4)golang提供for-range的方式,可以方便遍历字符串和数组
Demo 传统方式:
var str string = "hello,world!"
for i := 0; i < len(str); i++ {
fmt.Printf("%c \n", str[i])
}
for-range方式遍历:
var str string = "hello,world!"
for index, val := range str {
fmt.Printf("index = %d, val = %c \n", index, val)
}
上面两种的区别主要体现在遍历方式,如果字符串有中文,那么传统的遍历字符串的方式就会错误。
原因:传统的遍历是按照字节来遍历,而一个汉字在utf8编码是对应3个字节。
如何解决: 需要将str转成 []rune 切片
var str string = "hello,中国!"
str2 := []rune(str)
for i := 0; i < len(str2); i++ {
fmt.Printf("%c \n", str2[i])
}
对于for-range而言是按照字符方式去遍历,因此如果字符串有中文也是没问题的。、
需要注意的是 for-range中遇到中文字符时,index会加3
2、while和do..while的实现
go语言没有while和do..while的语法,但是可以通过for循环来实现一样的效果
(1) while 效果
var index int = 0
for {
if index > 10 {
break
}
index++
fmt.Println("hello, ", index)
}
(2) do while 效果
var index int = 0
for {
index++
fmt.Println("hello, ", index)
if index > 10 {
break
}
}
===========================实现空心金字塔以及简单的乘法口诀表==================
//另写一篇文章,简单的描述下思路
3、break 和 continue
label1:
for i := 0; i < 5; i++ {
//label2:
for j := 0; j < 5; j++ {
if j == 2 {
break label1
}
println("j = , ", j)
}
}
//如果break label1 执行到break的时候就知道跳出label1的循环。 标签名随意取
//如果只写break 则默认跳出最近一层的循环
continue同理