登录
首页 >  Golang >  Go问答

理解 Go 中的变量作用域

来源:Golang技术栈

时间:2023-05-02 12:16:31 223浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《理解 Go 中的变量作用域》主要内容涉及到golang等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我正在通过Go specification学习语言,这些要点取自Declarations and scope.

尽管我能够理解第 1-4 点,但我对以下几点感到5困惑6

  1. 在函数内声明的常量或变量标识符的范围从 ConstSpec 或 VarSpec(短变量声明的 ShortVarDecl)的末尾开始,并在最里面的包含块的末尾结束。
  2. 在函数内部声明的类型标识符的范围从 TypeSpec 中的标识符开始,到最里面的包含块的末尾结束。

这是我用来理解 Go 范围的代码:

package main

import "fmt"

func main() {
    x := 42
    fmt.Println(x)
    {
        fmt.Println(x)
        y := "The test message"
        fmt.Println(y)
    }
    // fmt.Println(y) // outside scope of y
}

由此我理解的scope of x是在main函数内,并且在scope of y后的左括号和右括号内fmt.Println(x),我不能y在右括号之外使用。

如果我理解正确,那么这两点4 and 5都在说同样的事情。所以我的问题是:

  1. 如果他们说的是同一件事,那么importance这两点是什么?

  2. 如果它们不同,你能告诉我difference吗?

正确答案

他们使用相同的规则,关于两个不同的事情提出了相同的观点:第一个是关于变量和常量,第二个是关于类型标识符。因此,如果您在块内声明类型,则适用的范围规则与适用于在同一位置声明的变量相同。

今天关于《理解 Go 中的变量作用域》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

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