1、第一种,基本语法
for 循环变量初始化;循环条件;循环变量迭代 {
循环体
}
2、第二种,类似于Java的while
for 循环条件 {
循环体
}
举例:
func main() {
i := 0 // 循环变量初始化
for i < 3 { // 循环变量条件
fmt.Println("Hello, World!")
i++ // 循环变量迭代
}
}
3、第三种
for {
循环体
}
类似于一个无线循环,通常需要配合break语句使用
举例:
func main() {
i := 0 // 循环变量初始化
for {
if i < 3 { // 循环变量条件
fmt.Println("Hello, World!")
} else {
break
}
i++ // 循环变量迭代
}
}
4、for-range方式,用于遍历字符串和数组
4.1 传统方式遍历带中文的字符串:
func main() {
str := "asdfasd上海"
for i := 0 ; i < len(str) ; i++ {
fmt.Printf("下标为%d,值为%c\n",i,str[i])
}
}
注意:可以发现中文为乱码,是按照字节来遍历的
4.2 改进后传统方式遍历带中文的字符串
func main() {
str := "asdfasd上海"
str2 := []rune(str)
for i := 0 ; i < len(str2) ; i++ {
fmt.Printf("下标为%d,值为%c\n",i,str2[i])
}
}
分析:将str转为[]rune,一个rune占4个字节,可以存放下中文
4.3 for-range遍历带中文的字符串
func main() {
str := "asdfasd上海"
for index , value := range str {
fmt.Printf("index=%d,value=%c\n",index,value)
}
}
注意:由于go是按照utf-8编码,一个中文占三个字节,for-range遍历字符串是按照字符来遍历的,而不是按照字节来的,所以遍历到中文后,序号会不连续
5、for实现while
循环变量初始化
for {
if 循环条件表达式 {
break
}
循环体
循环变量迭代
}
6、for循环实现do-while
循环变量初始化
for {
循环体
循环变量迭代
if 循环条件表达式 {
break
}
}
浙公网安备 33010602011771号