返回介绍

for

发布于 2024-10-12 12:35:53 字数 2120 浏览 0 评论 0 收藏 0

Go 里面最强大的一个控制逻辑就是 for ,它既可以用来循环读取数据,又可以当作 while 来控制逻辑,还能迭代操作。它的语法如下:

for expression1; expression2; expression3 {
    //...
}

expression1expression2expression3 都是表达式,其中 expression1expression3 是变量声明或者函数调用返回值之类的, expression2 是用来条件判断, expression1 在循环开始之前调用, expression3 在每轮循环结束之时调用。

一个例子比上面讲那么多更有用,看看下面的例子吧:

package main
import "fmt"
func main(){
    sum := 0;
    for index:=0; index < 10 ; index++ {
        sum += index
    }
    fmt.Println("sum is equal to ", sum)
}
// 输出:sum is equal to 45

有些时候需要进行多个赋值操作,由于 Go 里面没有 , 操作符,那么可以使用平行赋值 i, j = i+1, j-1

有些时候如果忽略 expression1expression3

sum := 1
for ; sum < 1000;  {
    sum += sum
}

其中 ; 也可以省略,那么就变成如下的代码了,这就是 while 的功能。

sum := 1
for sum < 1000 {
    sum += sum
}

在循环里面有两个关键操作 breakcontinue , break 操作是跳出当前循环, continue 是跳过本次循环。当嵌套过深的时候, break 可以配合标签使用,即跳转至标签所指定的位置,详细参考如下例子:

for index := 10; index>0; index-- {
    if index == 5{
        break // 或者 continue
    }
    fmt.Println(index)
}
// break 打印出来 10、9、8、7、6
// continue 打印出来 10、9、8、7、6、4、3、2、1

breakcontinue 还可以跟着标号,用来跳到多重循环中的外层循环

for 配合 range 可以用于读取 slicemap 的数据:

for k,v:=range map {
    fmt.Println("map's key:",k)
    fmt.Println("map's val:",v)
}

由于 Go 支持 “多值返回”, 而对于“声明而未被调用”的变量,编译器会报错,在这种情况下,可以使用 _ 来丢弃不需要的返回值

例如

for _, v := range map{
    fmt.Println("map's val:", v)
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文