1、第一种,基本语法
1 2 3 | for 循环变量初始化;循环条件;循环变量迭代 { 循环体 } |
2、第二种,类似于Java的while
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,一个rune占4个字节,可以存放下中文
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 } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!