golang循环语句

走远了吗. 提交于 2019-11-30 19:27:20

重要的事情: for 是 Go 语言里面唯一的循环语句。

1. for 语句基础形式

for 语句有几种形式,先以最基础的为例:

// 基础for循环与C语言for循环结构类似
for init; condition; post {
    // 零个或多个语句
}

例如:

for i := 0; i < 100; i++ {
    fmt.Println("i=",i)
}

其中:

init(初始化)语句在循环开始之前执行。如果存在,它必须是一个简单的语句,例如一个简单的变量声明语句。

condition(条件)语句是一个布尔表达式,在循环的每一次迭代前计算,如果计算结构为真,则循环继续。

post 语句在循环体之后被执行,然后进行条件计算。

在 Go 的 for 语法中,init,condition 和 post 语句都是可以省略的。 不同的省略方式产生不同的形式。


// 省略init和post,类似传统的"while"循环
for condition {
    // ...
}

// 例如
var i = 0
for i < 100 {
    fmt.Println("i=",i)
    i++
}
// init,condition 和 post 都省略, 类似传统的无限循环
for {
    // ...
}

2. for 语句迭代形式

for 语句还有另一种形式,即与 range 语句一起的迭代形式。 可迭代的数据类型可以是: 字符串, 数组(array), 切片(slice), 通道(channel) 或 集合(map)。

其中:在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对的 key 值。

例如:

package main

import "fmt"

func main() {
    nums := []int{1, 2, 3, 4}
    for i, num := range nums {
        fmt.Println("index:", i, ", num:", num)
    }

    kvs := map[string]string{"a": "apple", "b": "banana"}
    for k, v := range kvs {
        fmt.Printf("%s -> %s\n", k, v)
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!