posts - 134,comments - 0,views - 66674

1、第一种,基本语法

1
2
3
for 循环变量初始化;循环条件;循环变量迭代 {
    循环体
}

  

2、第二种,类似于Javawhile

1
2
3
for 循环条件 {
    循环体
}

举例:

1
2
3
4
5
6
7
func main() {
    i := 0 // 循环变量初始化
    for i < 3 { // 循环变量条件
        fmt.Println("Hello, World!")
    i++ // 循环变量迭代
    }  
}

  

3、第三种

1
2
3
for {
    循环体
}

类似于一个无线循环,通常需要配合break语句使用

举例:

1
2
3
4
5
6
7
8
9
10
11
func main() {
    i := 0 // 循环变量初始化
    for {
        if i < 3 { // 循环变量条件
        fmt.Println("Hello, World!")
    } else {
        break
    }
    i++ // 循环变量迭代
    }  
}   

  

4、for-range方式,用于遍历字符串和数组

4.1 传统方式遍历带中文的字符串:

1
2
3
4
5
6
func main() {
    str := "asdfasd上海"
    for i := 0 ; i < len(str) ; i++ {
    fmt.Printf("下标为%d,值为%c\n",i,str[i])
    }      
}

注意:可以发现中文为乱码,是按照字节来遍历的

4.2 改进后传统方式遍历带中文的字符串

1
2
3
4
5
6
7
func main() {
    str := "asdfasd上海"
    str2 := []rune(str)
    for i := 0 ; i < len(str2) ; i++ {
    fmt.Printf("下标为%d,值为%c\n",i,str2[i])
    }      
}

分析:将str转为[]rune,一个rune4个字节,可以存放下中文

4.3 for-range遍历带中文的字符串

1
2
3
4
5
6
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

1
2
3
4
5
6
7
8
循环变量初始化
for {
    if 循环条件表达式 {
    break
    }
    循环体
    循环变量迭代
}

  

6、for循环实现do-while

1
2
3
4
5
6
7
8
循环变量初始化
for {
    循环体
    循环变量迭代
    if 循环条件表达式 {
    break
    }
}

  

posted on   smile学子  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示