gpt4 book ai didi

go - 理解 Go 中的变量作用域

转载 作者:IT王子 更新时间:2023-10-29 01:25:43 26 4
gpt4 key购买 nike

我正在通过 Go 规范 来学习这门语言,这些要点取自 Declarations and scope 下的规范.

虽然我能够理解第 1-4 点,但我对 56 点感到困惑:

  1. The scope of a constant or variable identifier declared inside a function begins at the end of the ConstSpec or VarSpec (ShortVarDecl for short variable declarations) and ends at the end of the innermost containing block.
  2. The scope of a type identifier declared inside a function begins at the identifier in the TypeSpec and ends at the end of the innermost containing block.

这是我用来理解 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 xmain 函数内,而 scope of y 在 opening 和 closing 内fmt.Println(x) 之后的括号,我不能在右括号之外使用 y

如果我没理解错的话,4 和 5 这两个点说的是同一件事。所以我的问题是:

  1. 如果他们说的是同一件事,那么两者的重要性是什么积分?

  2. 如果它们不同,您能告诉我区别吗?

最佳答案

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

关于go - 理解 Go 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52503560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com