登录
首页 >  Golang >  Go问答

使用 var 在 for 循环中声明变量

来源:stackoverflow

时间:2024-03-23 13:57:26 240浏览 收藏

在 Go 语言中,使用 `var` 在 `for` 循环中声明变量时,关键在于当前代码块中必须定义至少一个新变量。因此,在示例 (a) 中,代码失败,因为试图重新定义 `a` 变量,而没有引入新变量。相反,在示例 (b) 中,`r` 是在循环中声明的新变量,因此代码有效。

问题内容

请参阅下面的代码。 (a) 在 go 中不行,我明白为什么。但为什么 (b) 在 go 中可以呢?

(a) 不行:因为重新定义了 a (在 := 的 lhs 中没有新的变量)

(b) 也应该是一个错误:因为重新定义 r (在 := 的 lhs 中没有新的变量),因为循环将在每次迭代时执行 r :=,而 r 仍在范围内。

package main

import "fmt"

func main() {
    a := make([]byte, 10)
    fmt.Println(a)
    a := make([]byte, 10) //not ok and I understand why : (A)
    fmt.Println(a)

    for i := 0; i < 5; i++ {
        r := make([]byte, 10) //ok, but why is this ok? : (B)
        fmt.Println(r)
    }
}

正确答案


短格式声明背后的关键思想是它必须在当前块中定义至少一个新变量。因此它在第一种情况下失败,因为它试图在当前块中重新定义 a 而不引入任何新变量。第二个块有效,因为 r 是在当前块中声明的新变量。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用 var 在 for 循环中声明变量》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>