```灰子学技术:
原文链接:https://mp.weixin.qq.com/s/ITS8CjBup5ZmXPsdz30RQQ```
Go语言中的循环语句只有for,没有while和do/while这两种格式。
Go语言中的for语句的表达形式有三种实现方式:
**1、基于计数器的实现。**
语法规则如下所示,这与C++的for循环实现模式基本类似,不过没有()。
```
for i := 0; i<N; ++i { // 备注与C++的不同:1. 表达式不需要添加括号,2.{ 要与for语句在同一行
}
```
例子:
```
package main
import (
"fmt"
)
func main() {
for i := 0; i < 5; i++ {
fmt.Println("Hello, i:",i)
}
fmt.Println("Hello, playground:")
return
}
```
Output:
```
Hello, i: 0
Hello, i: 1
Hello, i: 2
Hello, i: 3
Hello, i: 4
Hello, playground:
```
实现无限循环:
```
// 方式一:
for i := 0; ; i++ {
fmt.Println("Hello, i:",i)
}
// 方式二:
for ; ; {
fmt.Println("Hello, playground:")
}
// 方式三:
for {
fmt.Println("Hello, playground:")
}
```
**2、基于条件判断的实现。**
格式为:for 条件语句 {
}
例子如下所示:
```
package main
import (
"fmt"
)
func main() {
i := 0
for i < 5 {
fmt.Println("Hello, playground:",i)
i += 2
}
return
}
Output:
Hello, playground: 0
Hello, playground: 2
Hello, playground: 4
```
实现无限循环:
```
for true { // 备注:这里的实现方式与C++中的while类似。
fmt.Println("Hello, playground:")
}
```
**3、基于for-range的实现。**
```
格式为:for idx, value := range collection {
} // 备注:这里的实现与C++中的foreach很类似。
```
例子为:
```
package main
import (
"fmt"
)
func main() {
// 1. 数组的循环
strs := []string{"Hello", "World", "I", "Love", "You!"}
for i, str := range strs {
fmt.Println("Hello, Strs:", i, str)
}
// 2. map的循环
strMap := map[string]string {
"a":"Hello",
"b":"The",
"c":"World",
}
for i, str := range strMap {
fmt.Println("Hello, strMap:", i, str)
}
return
}
```
Output: // 备注:从map的输出顺序来看,map并不能保证初始化的顺序和输出的顺序是一致的
```
Hello, Strs: 0 Hello
Hello, Strs: 1 World
Hello, Strs: 2 I
Hello, Strs: 3 Love
Hello, Strs: 4 You!
Hello, strMap: b The
Hello, strMap: c World
Hello, strMap: a Hello
```
灰子学技术,欢迎关注,点评,相互学习。
![image.png](https://static.studygolang.com/190908/c117f7cb8b843d58ca186fc96cfa3bb2.png)
有疑问加站长微信联系(非本文作者))