How to Access Constants and Package-Level Variables When Shadowed by Local Variables in Go?

Susan Sarandon
Release: 2024-11-14 22:33:02
Original
749 people have browsed it

How to Access Constants and Package-Level Variables When Shadowed by Local Variables in Go?

Referring to Constants and Package-Level Variables Inside Functions

In the provided Go code, within the main function, a local variable name is defined, which shadows the constant or package-level variable with the same name. This can lead to confusion and incorrect behavior.

Understanding Shadowing

In Go, when a new variable is declared within a function, it takes precedence over any other variable with the same name defined at a higher level (e.g., in a package-level scope). This is known as variable shadowing.

Resolution

To refer to the constant or package-level variable name within the main function, we can't directly use the identifier name as it denotes the function-level variable. Instead, we can use one of the following approaches:

  • Saving the Constant or Variable Value: We can temporarily store the value of the constant or package-level variable in a local variable with a different name. For example:
const name = "Yosua"

func main() {
    localName := name
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(localName) // Yosua
}
Copy after login
  • Providing a Getter Function: We can create a function that returns the value of the constant or package-level variable. For example:
const name = "Yosua"

func getName() string {
    return name
}

func main() {
    name := "Jobs"
    fmt.Println(name) // Jobs
    fmt.Println(getName()) // Yosua
}
Copy after login

Note

If a package-level variable is declared using var instead of const, it can be shadowed and reassigned within functions. In such cases, using one of the approaches above ensures that the original value is preserved.

The above is the detailed content of How to Access Constants and Package-Level Variables When Shadowed by Local Variables in Go?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template